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'});
  }
};

    

 

Vue中配置Axios拦截器可以通过以下步骤实现: 1. 首先,在项目中引入Axios库和需要的其他依赖(例如Element UI)。 2. 创建一个Axios实例,可以命名为`instances`,并设置`baseURL`等配置项。 3. 在创建的Axios实例中,使用`interceptors`属性来配置响应拦截器。 4. 在响应拦截器中,可以通过`instances.interceptors.response.use()`方法来定义成功和失败的处理函数。 5. 在成功处理函数中,可以对接口调用成功后的响应进行处理,例如打印日志或进行其他操作。 6. 在失败处理函数中,可以对接口调用失败时的情况进行处理,例如打印错误信息或显示提示消息。 7. 最后,导出配置好的Axios实例,以便在项目其他地方使用。 以下是一个示例代码,演示了如何配置Vue中的Axios拦截器: ```javascript import axios from 'axios'; import { Message } from 'element-ui'; import router from '../router'; const instances = axios.create({ baseURL: 'http://localhost', }); instances.interceptors.response.use( success => { console.log('响应拦截器,成功'); // 在这里对成功的响应进行处理 }, error => { console.log('响应拦截器,失败', error); Message.error({ message: error }); // 在这里对失败的响应进行处理 } ); export default instances; ``` 请注意,上述代码是一个示例,你可以根据自己的需求进行修改和扩展。同时,还可以根据需要配置请求拦截器,以实现在所有请求中添加统一的内容,例如请求头等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值