如果找不到资源,DELETE路由应该发送404吗? Express.js

时间:2017-10-31 01:24:26

标签: rest express

正如您在主题中看到的那样。如果找不到资源,删除请求的REST标准是什么以及如何检查?

router.route('/tasks/:id').delete((req, res) => {
    Task.findByIdAndRemove(req.params.id)
        .then(() => {
            // REST Response for deleting content
            res.status(204);
            res.send('');
        })
        .catch(err => {
            res.status(404);
            res.send(err);
        });
});

在这个例子中,我无法获得404,我不知道为什么。

1 个答案:

答案 0 :(得分:0)

您必须在当时的回调中检查您收到的文件,如下所示:

router.route('/tasks/:id').delete((req, res) => {
    Task.findByIdAndRemove(req.params.id)
        .then((task) => {
            if (!task) {
                res.status(404);
                res.send('');
            } else {
                res.status(204);
                res.send('');
            }
        })
        .catch(err => {
            res.status(404);
            res.send(err);
        });
});

通常在找不到文档时发送404是正确的,在删除功能中也是如此。有关详情,请参阅this问题。