我使用的是React原生版本0.62.2,Axios版本^0.19.2速成版本^4.17.1
在表达中使用
if (!user) {
return res.status(404).send({email:'email not exist'})
}但是事情是在前端(使用axios的本机反应)端,我在catch中得到了以下结果: Error:状态代码404而不是err.response的请求失败
使用axios的本机代码
export const onLogin = userData => {
return dispatch => {
dispatch(onFetching());
Axios.post(`${Routes.login}`, userData)
.then(res => {
console.log(res)
})
.catch(err => {
console.log(err)
});
};
};我在这里做错什么了吗?
,您能用一个演示问题的最小工作示例来更新您的帖子吗?
import axios from 'axios'
const instance = axios.create({
timeout: 1000,
validateStatus: function validateStatus(status) {
let default = status >= 200 && status < 300
let extra = status == 404
return default || extra
}
});
export default instance;那么到底发生了什么事,听听他的

发布于 2020-05-23 12:21:04
,但是事情是在前端(使用axios的本机反应)端,我在catch中得到了以下结果: Error:状态代码404请求失败,而不是err.response。
这是通过设计实现的,当响应的状态代码在默认情况下不在200-299的范围内时,它会抛出一个错误。
可以通过在validateStatus中覆盖axios.create来更改此默认设置。例如,要接受默认允许的状态代码范围+ 404:
const instance = axios.create({
...
validateStatus: function validateStatus(status) {
let default = status >= 200 && status < 300;
let extra = status == 404
return default || extra
}
});那么,即使状态代码为404,axios也不会抛出错误。
这是不建议的,但状态代码不是在2xx中意味着要作为错误处理。要获得您应该使用的响应
.then(err => console.log(err.response),,在您的例子中,它将是{email:'email not exist'}Axios默认validateStatus:
validateStatus: function validateStatus(status) {
return status >= 200 && status < 300;
}Axios错误属性:错误、配置、代码、请求、响应
您可以在这里检查axios的默认值:https://github.com/axios/axios/blob/6642ca9aa1efae47b1a9d3ce3adc98416318661c/lib/defaults.js#L79
createError:https://github.com/axios/axios/blob/master/lib/core/createError.js
更新2:
,但在哪里使用这个实例变量的反应-本机方面的权利。
是的,您可以将它放在单独的文件中,然后导入它。然后,无论何时您想使用axios和这里配置的选项,您都可以导入已经定义的实例,而不是每次都将多个选项传递给axios。
例如:
utils/axos.js
const instance = axios.create({
...
validateStatus: function validateStatus(status) {
let default_ = status >= 200 && status < 300;
let extra = status == 404
return default_ || extra
}
});
export default instance;然后不使用:import axios from "axios";使用import axios from "./utils/axios";
https://stackoverflow.com/questions/61971296
复制相似问题