vue axios获取状态码(success,error)

    项目中遇到个小需求,当页面半个小时内无任何操作的时候,token自动失效,毫无疑问是要跳到登录页的,token失效后后端给我的状态码是412,那么好,这个412我就是获取不到,给中console.log就是打印不出我想要的status,最终还是找到了我想要的。

    获取状态有两种写法:这里的api为配置的api文件,在main.js中引入,我的配置方法链接在这axios的API配置文件

import * as api from './Api'

    一、handleSuccess,获取成功的状态码,response里全是你想要的信息,这里使用了elementUI

api.allHandle.handleSuccess = function (response) {
  let body = response.data;
  switch (body.event){
    case 'SUCCESS':
      if(callback){
        callback(body.data);
      }
      break;
    case 'ERROR':
      Vue.prototype.$notify.error({
        title: '操作提示',
        message: body.describe
      });
      if(error){
        error(body);
      }
      break;
    case 'EXCEPTION':
      Vue.prototype.$notify.error({
        title: '操作提示',
        message: body.describe
      });
      if(error){
        error(body);
      }
      break;
    case 'UNAUTHORIZED':
      Vue.prototype.$notify.error({
        title: '操作提示',
        message: body.describe
      });
      if(error){
        error(body);
      }
      router.push({name:'userlogin'});
      break;
    default:
      Vue.prototype.$notify.error({
        title: '操作提示',
        message: body.describe
      });
  }
};

    二、handleError,在这里打印error是打印不出来的,下面的图并不是我想要的东西

    几经周折,打印error.response,注意这个response很重要,我忽略了他,所以打印不出来

    没错,这才是我想要的,获取到状态码判断一下就好了。

api.allHandle.handleCatch = function (error) {
  console.log(error.response.status);
  if(error.response.status===412){
    router.push({name:'userlogin'});
  }
};

    

猜你喜欢

转载自blog.csdn.net/xr510002594/article/details/84318238
今日推荐