React--对axios的封装

/**
 * 对axios的封装
 */

//引入axios
import axios from 'axios';

//引入其它配置(根据具体需求按需引入)
import { history } from 'umi';


//1.创建axios实例,默认配置也可以在具体请求内复写修改。
const instance = axios.create({
    //请求头默认配置
    headers: {
        //请求为异步设置
        'x-requested-with': 'XMLHttpRequest',
        //请求类容数据格式
        //详情:https://www.cnblogs.com/fei-yu9999/p/15270729.html
        'Content-Type': 'application/x-www-form-urlencoded'
    },

    // 覆写库的超时默认值
    // 现在,在超时前,所有请求都会等待 5 秒
    timeout:5000,

    //apibaseURL设置
    baseURL:'http://localhost:3000',
});


// 2.添加请求拦截器
instance.interceptors.request.use((request) => {
    // 在发送请求之前做些什么
    
    /**
     * 添加权限验证
        const user: any = true;
        if (user) {
        request.headers = {
            ...request.headers,
            Authorization: user,
        };
        }
     */
    return request;

},(error)=>{

    // 对请求错误做些什么(转到错误页面之类的)
    return Promise.reject(error);

});


// 3.添加响应拦截器
instance.interceptors.response.use((response) => {
    // 对响应数据做点什么
    /**
     * 对特定api进行操作
     * if (response.config.url == '/api/auth/getCode') {
        return response;
      }
     */

    //对一些特定的后端指定错误进行页面跳转(比如权限验证等的)

    //返回data使用时只关注数据
    return response.data;
},(error) => {
    // 对响应错误做点什么(转到错误页面之类的)
    return Promise.reject(error);
});

export default instance;

  

posted @ 2021-09-15 11:34  飞渝  阅读(853)  评论(0编辑  收藏  举报