需求
一般默认状态码200~300为正确的请求,新增一个自定义合法状态码的配置。
// validate statusaxios.get('/more/304').then(res => {console.log(res)}).catch(err => {console.error(err)})axios.get('/more/304', {validateStatus(status) {return 200 <= status && status < 400}}).then(res => {console.log(res)}).catch(err => {console.error(err)})
代码实现
类型声明
export interface AxiosRequestConfig {
// ...
validateStatus?: (status: number) => boolean
}
添加默认检验配置
const defaultConfig: AxiosRequestConfig = {
// ...
validateStatus: function (status) {
return status >= 200 && status < 300
}
}
修改状态码判断处理逻辑
function handleResponse(response: AxiosResponse) {
if (!validateStatus || validateStatus(response.status)) {
resolve(response)
} else {
reject(
createError(
`request failed with status ${response.status}`,
config,
null,
request,
response
)
)
}
}
