Vuex axios呼叫可以处理422响应 [英] Vuex axios call can't handle 422 response

查看:42
本文介绍了Vuex axios呼叫可以处理422响应的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试处理来自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
}

这篇关于Vuex axios呼叫可以处理422响应的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆