我正在向服务器发出请求,如果遇到错误,我想进行console.log记录,但返回一个JavaScript错误。
我在网上找到了此解决方案,在此拦截中,我可以适当地返回错误,但似乎不起作用。
Axios.interceptors.response.use(
response => {
return response;
},
function(error) {
// Do something with response error
if (error.response.status === 401) {
console.log("unauthorized, logging out ...");
store.commit("logout");
router.push({ path: "/login" });
}
return Promise.reject(error.response);
}
);
这是我的要求:
Axios.put("/api/auth/request/phone/verify", {
phone: this.registeredPhone,
code: this.stashedCode()
})
.then(response => {
console.log(response);
if (response.data.status == 200 && response.data.success) {
swal("Success", response.data.data.message, "success");
}
})
.catch(error => {
// console.log(error);
console.log(error.response);
});
我期望像这样的东西
{
"status": 422,
"success": false,
"data": {
"erro": "validation.phone_field_required."
}
但是我最终得到:PUT http://localhost:3000/api/auth/request/phone/verify 422 (Unprocessable Entity)
答案 0 :(得分:0)
。您应该将有效的状态代码作为选项传递给axios。如果您不这样做,则状态代码 4XX 是错误,因此可以通过catch块进行处理。
axios.get('/user/12345', {
validateStatus: function (status) {
return status < 500; // Reject only if the status code is greater than or equal to 500
}
})
所以您的请求将像这样更改:
axios({
method: 'put',
url: '/api/auth/request/phone/verify',
data: {
phone: this.registeredPhone,
code: this.stashedCode()
},
validateStatus: (status) => {
return status < 500;
},
}).catch(error => {
}).then(response => {
console.log(response);
if (response.data.status == 200 && response.data.success) {
swal("Success", response.data.data.message, "success");
}
})
随时可以在评论中提出更多问题