对于vue中axios拦截器简单封装

axios.interceptors.response.use(
  response => {
  // 如果返回的状态码为200,说明接口请求成功,可以正常拿到数据
  // 否则的话抛出错误
  if (response.status === 200) {
    if (response.headers.x_auth_token) {
      localStorage.setItem('x_auth_token', response.headers.x_auth_token); // 存储token
    }
  } else {
    return Promise.reject(response);
  }
},
error => {
  if (error.response.status) {
    switch (error.response.status) {
      // 401: 未登录
      case 401:
        break;
      // 403: token过期
      case 403:
        break;
      // 404:请求不存在
      case 404:
        break;
      default:
        alert(error.response.data.message);
    }
    return Promise.reject(error.response);
  }
})

axios 请求拦截器
axios.interceptors.request.use(
  config => {
    // 每次发送请求之前判断vuex中是否存在tocken
    // 如果存在,则统一在http请求的header都加上tocken,这样后台根据tocken判断你的登录情况
    // 即使本地存在token,也有可能token是过期的,所以在响应拦截器中要对返回状态进行判断
    const token = localStorage.getItem('x_auth_token');
    token && (config.headers.x_auth_token = token); 
    return config;
  },
  error => {
    return Promise.error(error);
  }
)

  

posted @ 2019-11-19 14:13  zaijinyang  阅读(432)  评论(0编辑  收藏  举报