在客户端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已关闭”。
答案 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.',
};
});