我正在从后端代码发送状态代码422,其中包含错误描述的响应正文。我使用axios post发布请求,如下所示:
post: function(url, reqBody) {
const request = axios({
baseURL: config.apiUrl,
url: url,
headers: {
'Content-Type': 'application/json',
'Authorization': sessionStorage.getItem('token')
},
method: 'POST',
data: reqBody,
responseType: 'json'
});
return request
.then((res) => {
return res;
})
.catch((error) => {
console.log(error);
return error;
})
}
问题是,当后端返回错误代码422时,我捕获的错误对象没有关于响应体的信息。有什么方法可以检索错误文本吗?
对于使用await/async和Typescript的用户
try {
const response = await axios.post(url, body)
} catch (error) {
console.log(error.response.data);
}
AXIOS错误响应的“主体”取决于请求的响应类型。
如果你想了解这个问题的全部细节,你可以看到这篇博文:如何捕捉AXIOS中的错误主体。
总之,AXIOS将根据错误返回3个不同的实体:
>
axios.get('wrongSetup')
.then((response) => {})
.catch((error) => {
console.log(error.message);
})
错误的网络请求:当我们试图访问的服务器根本没有响应时,就会发生这种情况。这可能是由于服务器关闭或URL错误。在这种情况下,我们可以使用错误来访问请求的信息。请求。
axios.get('network error')
.then((response) => {})
.catch((error) => {
console.log(error.request );
});
错误状态:这是最常见的请求。任何返回的状态不同于200的请求都可能发生这种情况。它可以是未经授权、未被发现、内部错误等。当发生此错误时,我们可以通过访问下面代码段中指定的参数来掌握请求的信息。对于数据(如上所述),我们需要访问错误。回答数据
。
axios.get('errorStatus')
.then((response) => {})
.catch((error) => {
console.log(error.response.data);
console.log(error.response.status);
console.log(error.response.headers);
})
我有同样的问题和答案(根据Axios
axios({
...
}).then((response) => {
....
}).catch((error) => {
if( error.response ){
console.log(error.response.data); // => the response payload
}
});
请参阅此处了解更多详细信息。
我无法用axios捕捉错误响应。怎么做?我用的是: 我看到ajax请求的结果有400个状态代码,响应主体看起来像(Django后端)。没关系,我已经准备好在catch处理程序中处理这些错误了。 但是它们转到成功处理程序。为何如此?我在控制台中看到以下输出: 成功处理程序接收axios错误对象作为结果。为什么会这样,下一步该怎么办?此错误对象不包含任何有用信息。 UPD。实际上,错误对象包含有用的信
我试图捕捉错误60并继续执行脚本,下面是我目前正在做的事情: 它返回这个: 回溯(最后一次调用):文件“debug.py”,第13行,在urlopen return\u opener中的soup=BeautifulSoup(urlib2.urlopen(url,timeout=10))文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/
是否可以使用promises的ES6语法捕获异步错误?例如,以下操作不起作用(.catch未捕获错误): 但是这个同步版本有: 使用try/catch块和清除catch中的错误是执行以下操作的唯一解决方案吗? 对于这个问题,假设抛出错误的代码部分位于另一个命名函数中,因此它没有访问函数的权限。 谢谢 编辑:这里有一个更完整的示例,说明我想在JSFIDLE中做什么。
我有一个应用程序使用了log4j1.2.17,现在我想把它更改为log4j2。所以我更改了pom.xml(我确信我已经删除了任何依赖项中的log4j1),添加了log4j2.xml。log4j2工作得很好,它记录了我想要的信息。 我查看log4j的问题。LOG4J2-2026似乎可以解决这个问题,但是我使用的log4j2版本已经是2.9.1了。我不知道是什么原因造成这个错误。
为什么我在尝试运行时,在Laravel 5.1中遇到了PHP可捕获的致命错误? 可捕获的致命错误:传递给Illumate\Routing\UrlGenerator::__construct()的参数2必须是Illumate\Http\Request的实例,空给定,在第62行和第62行的C:\xampp\htdocs\kincert2\本地\供应商\laravel\框架\src\Illumate\R
问题内容: 我试图确保用户输入是整数,但是当我使用下面的代码时,我只会得到语句的无限循环。关于如何改进的任何建议? 问题答案: 不会消耗无效的输入,因此它将反复尝试读取相同的无效值。要解决此问题,您需要通过调用或接受任何值来显式使用它。 顺便说一句,为使您的代码更整洁并避免昂贵的操作(如创建异常),您应使用。 这是组织代码的方法