使用 axios帖子捕获错误正文

我从我的后端代码发送一个状态代码 422,其中包含错误的描述。

我从我的后端代码发送一个状态代码 422,其中包含错误的描述。

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 时,我捕获的错误对象没有关于响应正文的信息。

177

我有同样的问题,答案(根据 Axios & gt;= 0.13)是专门检查error.response.data

axios({
    ...
}).then((response) => {
    ....
}).catch((error) => {
    if( error.response ){
        console.log(error.response.data); // => the response payload 
    }
});

有关详细信息,请参见here

34

AXIOS 错误响应的“正文”取决于请求的响应类型。

如果你想了解这个问题的全部细节,你可以看到这个博客:How to catch the body of an error in AXIOS

总而言之,AXIOS 将返回 3 个不同的主体,具体取决于错误:

错误的请求,我们实际上在我们的请求中做了一些错误的事情 (缺少参数,格式不好),那就是实际上没有被发送,当这种情况发生时,我们可以使用error.message访问信息。

axios.get('wrongSetup')
.then((response) => {})
.catch((error) => {
    console.log(error.message);
})

错误的网络请求:当我们试图到达的服务器根本没有响应时,就会发生这种情况。这可能是由于服务器关闭,或者 URL 错误。在这种情况下,我们可以使用error.request访问请求的信息。

axios.get('network error')
.then((response) => {})
.catch((error) => {
    console.log(error.request );
});

错误状态:这是最常见的请求。任何返回状态不同于 200 的请求都可能发生这种情况。它可能是未经授权的、未找到的、内部错误等等。发生此错误时,我们可以通过访问下面代码段中指定的参数来掌握请求的信息。对于数据 (如上所述),我们需要访问error.response.data

axios.get('errorStatus')
.then((response) => {})
.catch((error) => { 
     console.log(error.response.data);  
     console.log(error.response.status);  
     console.log(error.response.headers); 
 })
21

对于那些使用等待 / 异步和打字稿

try {
    const response = await axios.post(url, body)
} catch (error) {
    console.log(error.response.data);
}
9

对于 react native,它只是为我工作

api.METHOD('endPonit', body)
  .then(response => {
   //...
  })
  .catch (error => {
    const errorMessage = JSON.p(error.request.response)
    console.log(errorMessage.message)
  })

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(999)
在iOS应用程序中连接OPENVPN时出现“需要更新”错误
上一篇
确定设备是否是平板电脑的最佳方法是什么 (phone or tablet)
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(48条)