![](/img/trans.png)
[英]Axios. How to get error response even when api return 404 error, in try catch finally
[英]Why axios doesnt return API response when error thrown?
我在redux-saga上使用React。
我有一個簡單的/GET
請求。 但是,如果API拋出任何錯誤,例如400 bad request
, 我將無法獲得我的API返回的響應。
示例- /getUsers
返回400 bad request
並返回"Your form is invalid"
。 我可以在網絡中看到它,它已正確返回。 但是,在我的try catch
:
catch((error) => console.log(error.message))
始終是Network Error
。 我不想向用戶顯示Network Error
,但是API返回了響應。
如何獲得正確的API響應錯誤消息?
請求功能:
const getUsers = () => api.get(URL);
axios實例
const api = axios.create();
傳奇函數(僅作為示例)
try { yield call(getUsers); } catch(error) { yield put(getUsersFail(error.message)); }
首先,我們必須從axios調用獲取響應並檢查其狀態。 如果拋出400錯誤,則將其捕獲。
try {
const response = yield call(api.get, url)
if (response.status >= 200 && response.status < 300) {
yield put({ type.TYPE, response })
} else {
throw response
}
} catch(error) {
// API response error message
yield put({type.TYPE_ERROR, error.message})
}
請嘗試這個:
try {
const response = yield call(api.get, url)
if (response.status >= 200 && response.status < 300) {
yield put({ type.TYPE, response })
}
else {
throw new Error(JSON.stringify(response));
}
} catch(error) {
const errorMessage = error.response && error.response.error && error.response.error.message;
const errorMessage2 = error.request;
const errorMessage3 = error.message;
const reportedError = errorMessage || errorMessage2 || errorMessage3;
yield put({type.TYPE_ERROR, reportedError })
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.