
解决一个场景,在请求前,后做一些统一的事情
//添加token
axios.interceptors.request.use(
  config => {
    config.headers['token'] = 'xxxx'
    return config
  },
  error => {
    return Promise.reject(error)
  }
)
//统一异常处理
axios.interceptors.response.use(
  response => {
    const res = response.data
    if (res.code !== 200) {
      Message({
        message: res.msg || '出错啦!',
        type: 'error',
        duration: 5 * 1000,
        showClose: true
      })
      return Promise.reject(res.msg || 'error')
    } else {
      return res
    }
  },
  error => {
    Message({
      message: '没事,只是服务器出错啦!',
      type: 'error',
      duration: 5 * 1000,
      showClose: true
    })
    return Promise.reject(error)
  }
)
复制代码
Object.defineProperty(this, attr, {
    get: getterFactory(attr),
    set: setterFactory(attr),
    enumerable: true
})
*使用示例如下
/*
 * @Description: 加密
 * @Author: 吴文周
 * @Github: http://gitlab.yzf.net/wuwenzhou
 * @Date: 2020-03-13 17:39:01
 * @LastEditors: 吴文周
 * @LastEditTime: 2020-09-24 17:57:07
 */
(function () {
  /**
   * 需要拦截的url
  */
  var urlArray = [''];
  /**
   * 解密数据
  */
  function decryptResultAES(){
  }
  /**
   * 转化数据返回
  */
  function tryParseJson(v,xhr){
    if (checkUrl(xhr.xhr._ProxyURL)) {
        if (xhr.status === 200 && xhr.readyState === 4) {
            if (xhr.xhr.responseText && JSON.parse(xhr.xhr.responseText).result) {
                var responseText = JSON.parse(xhr.xhr.responseText);
                var result = decryptResultAES(responseText.result);
                if (typeof responseText.result !== 'object') {
                    responseText.result = JSON.parse(result);
                    return JSON.stringify(responseText);
                }
            }
        }
    }else{
      return v;
    }
  }
  /**
   * 获取无后缀url
   * @param {*} url
   */
  function getUrl(url) {
    return url.indexOf('?') > 0 ? url.substring(0, url.indexOf('?')) : url;
  }
  /**
   * 判断数组是否包含字符串
   * @param {*} url
   */
  function checkUrl(url) {
    return !!url? urlArray.indexOf(url) >= 0:false;
  }
  /**
   * 劫持请求
   */
  hookAjax({
      responseText: {
        getter: tryParseJson
      },
      response: {
        getter:tryParseJson
      },
      //拦截回调
      onreadystatechange: function (xhr) {
      },
      onload:function(xhr){
      },
      //拦截方法
      open: function (arg, xhr) {
        var url = getUrl(arg[1]);
        // 通过篡改添加标识地址
        Object.defineProperty(xhr, '_ProxyURL', {
          value: url,
          writable: true // 是否可以改变
        })
      },
      send: function (arg, xhr) {
          if (checkUrl(xhr._ProxyURL)) {
            xhr.setRequestHeader("xxx", "xxx")
          }
      }
  })
})()
复制代码sub_filter  "xxx"