例如。
(async() => {
let apiRes = null;
try {
apiRes = await axios.get('https://silex.edgeprop.my/api/v1/a');
} catch (err) {
console.error(err);
} finally {
console.log(apiRes);
}
})();
<{1>}中的,finally
将返回null。
即使api得到404响应,我仍然希望在响应中使用有用的信息。
当axios抛出错误时,如何在apiRes
中使用错误响应。
答案 0 :(得分:5)
根据the documentation,完整回复可用作错误的response
属性。
所以我会在catch
块中使用该信息:
(async() => {
let apiRes = null;
try {
apiRes = await axios.get('https://silex.edgeprop.my/api/v1/a');
} catch (err) {
console.error("Error response:");
console.error(err.response.data); // ***
console.error(err.response.status); // ***
console.error(err.response.headers); // ***
} finally {
console.log(apiRes);
}
})();
但如果您想在finally
中使用它,只需将其保存到您可以在那里使用的变量中:
(async() => {
let apiRes = null;
try {
apiRes = await axios.get('https://silex.edgeprop.my/api/v1/a');
} catch (err) {
apiRes = err.response;
} finally {
console.log(apiRes); // Could be success or error
}
})();
答案 1 :(得分:2)
根据AXIOS文档(此处为https://github.com/axios/axios),您可以将config对象中的validateStatus: false
传递给任何axios请求。
例如
axios.get(url, { validateStatus: false })
axios.post(url, postBody, { validateStatus: false })
您还可以传递如下函数:validateStatus: (status) => status === 200
根据文档,默认行为是如果(200 <= status <300)返回true的函数。