簡體   English   中英

在攔截器中訪問 Axios 錯誤代碼

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM