创建axios拦截器

  上一篇说axios并发的时候有提到 axios的请求统一管理是为了创建拦截器

       具体说一下拦截器的创建

        import Vue from 'vue';

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

        import { Message } from 'element-ui';  // 为了方便统一提示 引入element的Message

        创建axios实例   

  const request = axios.create({
      baseURL: myUrl , // api的base_url
      timeout: 30 * 60 * 1000 // request timeout
  })
  request.__proto__ = axios;
 
/**
 * 创建请求拦截器
 */
request.interceptors.request.use(
    config => {
// 获取token 统一在请求的headers里面加入Access-Token
        const token = Vue.ls.get(ACCESS_TOKEN)
        if (token) {
            config.headers['Access-Token'= token;
        }
        /** 清楚get方法的缓存:尤其是IE浏览器缓存 */
        if (config.method.toLocaleUpperCase() === 'GET') {
            if (!config.params) config.params = {};
            config.params['sendleTime'= new Date().getTime();
        }
        return config;
    },
    error => {
        Message({
            message: '客户端请求错误: ' + error.message,
            type: 'error',
            duration: 3 * 1000
        });
        return Promise.reject(error)
    }
)
 
/**
 * 创建响应拦截器
 */
request.interceptors.response.use(
    response => {
        const res = response.data;
        const code = res.status,
        if (code !== 200) {//状态码 !=200时,统一处理异常
            return Promise.reject(res.msg);
        }else {
            return response.data;
        }
    },
    error => {
        let errMsg = "请求发生错误"
        Message({
            message: errMsg,
            type: 'error',
            duration: 3 * 1000
        })
        return Promise.reject(error)
    }
)
 
posted @ 2019-11-18 14:37  前端阿楠  阅读(493)  评论(0编辑  收藏  举报