vue axios配置axios拦截器没有生效

如下代码所示 无论是504还是500 都没有相应提示 是出了什么问题么?
图片描述

axios.interceptors.response.use(
  response => {
    // 响应成功关闭loading
    console.log('response',response);

    loadinginstace.close();
    return response;
  },
  error => {
    console.log("error", error);
    if (error.response) {
      switch (error.response.status) {
        case 400:
          loadinginstace.close();
          Message.error({
            message: "参数异常"
          });

        case 404:
          loadinginstace.close();
          Message.error({
            message: "找不到该页面"
          });

        case 500:
          loadinginstace.close();
          Message.error({
            message: "服务器异常"
          });

        case 504:
          loadinginstace.close();
          Message.error({
            message: "服务器宕机"
          });
      }
    }

    return Promise.reject(error);
  }
);

捕捉到error时 打印error是如下结果
图片描述

请问如何拿到error的状态码?

阅读 10.4k
3 个回答

switch case用法有误,少了break

case 500:
          loadinginstace.close();
          Message.error({
            message: "服务器异常"
          });
break;

我也遇到这个问题了,感觉 axois 的拦截器不太好用,还是 Angular 的拦截器强大。
更新:以下这种方式可以拿到 status

const status = err.toString().match(/\d{3}/)[0];
validateStatus: function (status) {
    return status >= 200 && status < 300; // default
},

因为这个屏蔽掉了,如果想看全部的http status,直接返回true。在axios.interceptors.response.use的成功回调里就能拿到所有信息,不是错误回调哟。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题