如果用户试图删除没有find的logging,服务器应该返回一个200还是404?

我的同事在我们的API中开发了一个如下所示的约定:

... return Subscription.destroy({ where: { id: req.params.id } }).then((count) => { if (count === 0) { Logger.log('warn', '- subscriptionController.delete : no record found') return res.status(404).json(['No record found.']) } Logger.log('info', '- subscriptionController.delete') return res.status(200).end() ... 

理由是:如果没有findlogging,那么这是一个无效的请求,因为用户试图删除一条logging,但没有发生。

在我看来,即使没有logging被删除,只要提供给控制器的ID是有效的ID,就应该返回200。

什么是正确的实施?

通常情况下,如果找不到要返回或修改的资源,则API应返回404。但是,这可能会误导用户认为端点本身无效。

200代码暗示所请求的操作已成功完成,因此在删除后接收到200的用户将假定该logging确实存在并被删除。 404意味着无法find端点。

如果API调用是/api/record/1234 ,那么我会build议返回一个404,因为这个URI不存在。

如果api调用类似于/api/record?id=1234 ,那么我build议返回一个403或500错误消息,说明该logging不存在。 这样用户就知道/api/record是一个有效的端点。

你会得到一个404。根据HTTP标准。 如果您在没有logging的ID中searchlogging, 那么服务器将无法在指定的URI处匹配目标。

W3C的http状态码