如果没有找到用户(这只是一个理解错误处理的示例),我想发送一个自定义消息,如
res.status(404).send('no user');
我的客户端从来没有收到,而是我得到:
[AxiosError: Request failed with status code 404]
我做错了什么?我找不到其他的解决办法,我已经研究了一段时间了。也想知道我如何发送一个自定义状态(如果没有数据发现它的404,但如果我想发送200)?节点表达
router.get('/getuser', async (req, res) => {
try {
const user = await User.findOne({_id: req.user._id});
if (!user) {
res.status(404).send('no user');
} else {
res.status(200).send(user)
}
} catch(error) {
res.status(500).send(error)
}
});
前端
const trycatch = async () => {
try {
const response = await axios.get(example.com/trycatch)
return response.data;
} catch (error) {
console.log(error)
}
}
状态码大于等于400的响应被axios视为错误。作为消费者,您只能在catch (error)
子句中对此作出反应,例如:
catch (error) {
switch (error.response.status) {
case 404: return "no user"; break;
default: return error.response.data;
}
}
但是您可以使用axios请求的validateStatus
选项来影响导致错误的状态。
简介:您可以将代码分布在try
和catch
块之间,其中try
块代码处理成功(status <catch
块处理错误(status≥400)。或者你可以使用validateStatus
来改变什么是成功,什么是错误。>