如果使用Node.JS/express和axios没有发现数据,如何发送自定义状态和错误消息?



如果没有找到用户(这只是一个理解错误处理的示例),我想发送一个自定义消息,如

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选项来影响导致错误的状态。

简介:您可以将代码分布在trycatch块之间,其中try块代码处理成功(status <catch块处理错误(status≥400)。或者你可以使用validateStatus来改变什么是成功,什么是错误。>

最新更新