我正在使用以下代码向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
绑定到回调),然后在不终止整个脚本的情况下继续使用该方法?
原因是Axios default具有如下验证程序功能:
validateStatus: function (status) {
return status >= 200 && status < 300; // default
},
状态代码300及以上且小于200将导致axios抛出。
您可以通过以下任一方式使其不抛出(停止进一步执行):
尝试捕获:
try {
response = await axios.post(url, data, {
headers: {
'Content-Type': 'multipart/form-data',
}
});
} catch (error) {
this.doSomething() // this is available here
}
. cat on axios:
axios.post(url, data, {
headers: {
'Content-Type': 'multipart/form-data',
}
}).catch(error => {
console.log(error.response.data.errors);
});
注意:这与您的示例不同,因为没有使用异步/等待
错误回调:
axios.post(url, data, {
headers: {
'Content-Type': 'multipart/form-data',
}
}, error => {
console.log(error.response.data.errors);
})
如果您不希望Axios强制您将抛出超过300的状态代码,您可以将更改设置为默认axios验证器:
axios.defaults.validateStatus = (status) => {
return status === 200; // your own logic here to throw or not.
};
我正在使用Laravel version 7构建自己的API,但是当我从vuejs(实际上是quasar)向Laravel发出请求时,我会得到:“从origin”http://127.0.0.1:8080/API/login“访问XMLHttpRequest”已被CORS策略阻止:请求的资源上没有'Access-Control-Allog-Origin'标头“。 为了快速解决这个问题,我尝试添加(
我无法用axios捕捉错误响应。怎么做?我用的是: 我看到ajax请求的结果有400个状态代码,响应主体看起来像(Django后端)。没关系,我已经准备好在catch处理程序中处理这些错误了。 但是它们转到成功处理程序。为何如此?我在控制台中看到以下输出: 成功处理程序接收axios错误对象作为结果。为什么会这样,下一步该怎么办?此错误对象不包含任何有用信息。 UPD。实际上,错误对象包含有用的信
我正在从后端代码发送状态代码422,其中包含错误描述的响应正文。我使用axios post发布请求,如下所示: 问题是,当后端返回错误代码422时,我捕获的错误对象没有关于响应体的信息。有什么方法可以检索错误文本吗?
嗨,我正在为后端使用Laravel API,并在React中使用Redux进行登录。嗯,我调用API,我希望laravel API传递正在发生的事情的精确错误,例如用户不存在。问题是当我想在使用axios进行的调用的catch部分访问Mesage时 Laravel登录部分 使用axios响应调用 我在网络控制台中得到的响应 xhr.js:177邮政http://127.0.0.1:8000/api
我正试图将一些表单数据发送到后端,但Laravel验证不会返回422状态的错误。 公理 简单的axios将请求发送到URL,并希望在请求周期中发现错误时返回响应。 Laravel 我已经设置了Laravel验证来验证一些表单输入,如果验证失败,则返回422。 回答 给出了一个响应,但当我试图对其进行控制台时,控制台中没有定义: 我在这里遇到过这个问题https://github.com/axios
问题内容: 可以使用try catch块捕获TokenMismatchException吗?我希望它不显示显示“ VerifyCsrfToken.php第46行中的TokenMismatchException …”的调试页面,而是希望它显示实际页面并仅显示错误消息。 我对CSRF没问题,我只希望它仍然显示页面而不是调试页面。 复制(使用Firefox):步骤: 打开页面(http://exampl