在拦截器中访问Axios错误代码

时间:2020-04-08 11:36:13

标签: javascript reactjs axios

在客户端JavaScript / React / etc中使用axios响应拦截器时,如何访问以下错误代码:

  • ERR_CONNECTION_REFUSED(API服务器已关闭)
  • ERR_INTERNET_DISCONNECTED(本地网络已关闭)

我注意到axios/lib/adapters/xhr.js将这些代码打印到控制台,但是我似乎无法弄清楚如何在响应拦截器中自己访问它们?

代码:

axios.interceptors.response.use(null, (error) => {

    console.log(error.???);

    return Promise.reject(error);
}

注意:关键是要在向用户显示错误消息时,区分“您的互联网已关闭”和“我们的API已关闭”。

1 个答案:

答案 0 :(得分:1)

您可以获得类似error.response.status的状态,但是请编写安全代码,因为它并不总是正确的。如果是502,则error.response是不确定的,并且会中断

这是处理错误的方法

axios.interceptors.response.use(null, (error) => {
  if (error.message === 'Network Error') {
    if (error?.response?.status') === 504) {
      throw {
        message: 'Something went wrong. Please try again later.',
      };
    } else {
      throw {
        message: 'You are not connected to the internet. Verify your connection and then try again.',
      };
    }
  }
  if (error.response) {
    if (error.response.status === 500) {
      throw {
        message: 'Something went wrong. Please try again later.',
      };
    }
    if (error.response.status === 401) {
      // logout logic
    }
    if (error.response.status === 403) {
      // redirect user to some home page since that action is not allowed
    }
    throw { ...error.response.data, statusCode: error.response.status };
  }
  throw {
    message: 'Something went wrong. Please try again later.',
  };
});

相关问题