[英]Accessing Axios error codes in interceptor
在客戶端 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 已關閉”。
您可以像這樣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.', }; });
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.