![](/img/trans.png)
[英]Check HTTP status code in the Axios promise catch block VueJs
[英]Status code 300 return error in catch block when using axios
當我使用 axios 進行 http 調用時,它會進入 catch 塊並出現錯誤
我認為你有多種選擇。 您可以提取您的代碼then
回調到功能-當狀態代碼為300叫它在錯誤處理程序。
您也可以從 axios 嘗試此選項,僅當狀態代碼 > 301 時才拒絕承諾。
axios.get('/user/12345', {
validateStatus: function (status) {
return status <= 300; // Reject only if the status code is greater than 300
}
})
我需要一些更有活力的東西:
// oversimplified index.js
const axios = require('axios')
const allowedStatusList = json.parse(process.env.ALLOWED_STATUSES) || ["2xx"]
// ^^ check that it's a valid input yourself :p
const validateRequestStatusCode = allowedStatuses => {
const stringStatuses = allowedStatuses.map(String)
return status => {
if (stringStatuses.includes(String(status))) {
return true
} else {
for (let wildCardStatus of stringStatuses) {
const validRange = wildCardStatus.match(/.+?(?=xx)/g)
if (validRange && String(status).substring(0, 1) == validRange[0]) {
return true
}
}
}
return false
}
}
const axiosConfig = {
validateStatus: validateRequestStatusCode(allowedStatusList),
url,
data
// etc
}
axios(axiosConfig)
.then(...)
.catch(...)
這將允許您只提供一個環境變量(或者您想要進行的配置)來更改哪些狀態是有效的。
例如,設置ALLOWED_STATUSES='["2xx", "3xx", "4xx"]'
將允許來自 200 和 499 的任何狀態代碼。設置ALLOWED_STATUSES='[200, 201, "3xx"]'
並且你有一個更具體的過濾器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.