Vuex axios 调用无法处理 422 响应
Vuex axios call can't handle 422 response
我正在尝试处理来自我的 API 的 422 响应,以防在进行异步 Axios 调用时数据无效。
在一个组件中,我有一个像这样的方法:
async saveChanges() {
this.isSaving = true;
await this.$store.dispatch('updateSettings', this.formData);
this.isSaving = false;
}
在我这样的行为中:
let response;
try {
response = await axios.put('/api/settings', settings);
console.log(response);
} catch (e) {
console.log('error');
console.log(e);
}
如果请求成功,一切正常,我会得到响应。但是,如果响应状态码为 422,则不会失败或抛出异常,并且响应为空。我试过 .then(()).catch(())
,但也不走运,因为我需要它是异步的。
对我可能做错的地方有什么建议吗?
默认情况下,Axios 仅针对 200 到 300 之间的 HTTP 状态代码抛出错误。
通过设置 validateStatus
:
将 Axios 配置为也抛出 422
axios.put('/api/settings', settings, {
validateStatus: status => status >= 200 && status < 300 || status === 422
})
或者在正常回调中查看状态码:
response = await axios.put('/api/settings', settings);
if (response.status === 422) {
// throw error
}
我正在尝试处理来自我的 API 的 422 响应,以防在进行异步 Axios 调用时数据无效。
在一个组件中,我有一个像这样的方法:
async saveChanges() {
this.isSaving = true;
await this.$store.dispatch('updateSettings', this.formData);
this.isSaving = false;
}
在我这样的行为中:
let response;
try {
response = await axios.put('/api/settings', settings);
console.log(response);
} catch (e) {
console.log('error');
console.log(e);
}
如果请求成功,一切正常,我会得到响应。但是,如果响应状态码为 422,则不会失败或抛出异常,并且响应为空。我试过 .then(()).catch(())
,但也不走运,因为我需要它是异步的。
对我可能做错的地方有什么建议吗?
默认情况下,Axios 仅针对 200 到 300 之间的 HTTP 状态代码抛出错误。
通过设置 validateStatus
:
axios.put('/api/settings', settings, {
validateStatus: status => status >= 200 && status < 300 || status === 422
})
或者在正常回调中查看状态码:
response = await axios.put('/api/settings', settings);
if (response.status === 422) {
// throw error
}