我的同事在我们的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()
...
基本原理是:如果没有找到记录,那么这是一个无效的请求,因为用户试图删除记录并且没有发生。
在我看来,即使没有删除记录,也应返回200,只要提供给控制器的ID是有效ID即可。
正确的实施是什么?
答案 0 :(得分:0)
你会得到404.根据HTTP标准。如果您正在搜索没有记录的ID的记录;那么服务器将无法匹配指定URI的目标。
答案 1 :(得分:0)
通常,如果找不到要返回或修改的资源,API应该返回404.但是,这可能会误导用户认为端点本身无效。
200代码意味着请求的操作成功完成,因此在删除后接收200的用户将认为该记录确实存在并被删除。 404意味着无法找到端点。
如果api调用类似/api/record/1234
,那么我建议返回404,因为uri不存在。
如果api调用类似于/api/record?id=1234
,那么我建议返回403或500错误,并显示一条消息,指出该记录不存在。这样用户就知道/api/record
是一个有效的端点。