axios的封装和使用


 

 
 
  import config from '../api/config'
  import axios from 'axios'
 import {getLocal} from '../utils/local'
class HttpRequest {
     //初始化构造函数,this指向的是HttpRequest
    constructor(){
        this.baseURL = config.baseURL;
        this.timout = 3000;
    }
    setInterceptors(instance){ //创建拦截器
        instance.interceptors.request.use(config=>{
            // 一般增加一些token属性等  jwt
            config.headers.token = 'token'
        });
        //响应拦截器
        instance.interceptors.response.use(res=>{
            if (res.status == 200) {
                return Promise.resolve(res.data);
            }else {
                return Promise.reject(res.data)
            }
        },err=>{
            switch (err.response.status) {
                case '401':
                    console.log(err)
                    break;
            
                default:
                    break;
            }
            return Promise.reject(err)
        })
    }
    mergeOptions(options){
        return {
            baseURL:this.baseURL,timout:this.timout,...options
        }
    }
    //真正发送请求在这
    request(options){
        const instance = axios.create();
        this.setInterceptors(instance);
        const opts = this.mergeOptions(options);
        return instance(opts);
    }
    //封装get方法
    get(url,config){
        return this.request({
            method:'get',
            url,
            params:config,
          
        })
    }
    //封装post方法
    post(url,data){
        return this.request({
            method:'post',
            url,
            data:data,
          
        })
    }
}

export default new HttpRequest;  

调用:

把url和请求分开放进js文件里

 

引入封装好的axios和url文件

 

 

 最后在页面中调用

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM