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

发布于 2022-09-06 23:39:26 字数 1193 浏览 14 评论 0

如下代码所示 无论是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的状态码?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

司马昭之心 2022-09-13 23:39:26

switch case用法有误,少了break

case 500:
          loadinginstace.close();
          Message.error({
            message: "服务器异常"
          });
break;
潦草背影 2022-09-13 23:39:26

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

const status = err.toString().match(/\d{3}/)[0];
ゝ偶尔ゞ 2022-09-13 23:39:26
validateStatus: function (status) {
    return status >= 200 && status < 300; // default
},

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文