【发布时间】:2021-07-05 14:48:59
【问题描述】:
我正在使用以下代码向 Laravel 发布内容:
upload: async function() {
response = await axios.post(url, data, {
headers: {
'Content-Type': 'multipart/form-data',
}
}).catch(function(error) {
console.log(error.response.data.errors);
});
(无关代码省略)
当 Laravel 返回 200 时,这总体上有效。 如果我从 Laravel Axios 返回 401、422 或其他内容,则会在控制台中引发错误并且整个方法停止运行。
我一直认为这是对开发人员非常不友好的行为 - 我不理解吗?从后端 API 返回不同的状态代码应该有助于读取 Vue 中的响应,但 Vue/Axios 将每个非 200 响应视为致命错误。
如何捕捉错误 - 做某事(并将 $this 绑定到回调)然后继续该方法而不杀死整个脚本?
【问题讨论】:
-
如果您阅读了accepted HTTP codes,
axios正在做应该做的事情。您认为重定向 (3xx) 是来自 API 的成功响应吗?4xx/5xx怎么样?如果你的代码在你得到4xx时停止工作,那是因为你做错了,你使用async/await的方式不好,你必须使用try/catch而不是await + js.catch...这就是为什么您的代码停止工作...