gpt4 book ai didi

javascript - 如果用户尝试删除未找到的记录,服务器应该返回 200 还是 404?

转载 作者:太空宇宙 更新时间:2023-11-03 22:28:17 25 4
gpt4 key购买 nike

我的同事在我们的 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()
...

理由是:如果没有找到记录,那么这是一个无效的请求,因为用户尝试删除记录但没有发生。

在我看来,即使没有删除任何记录,只要提供给 Controller 的ID是有效的ID,就应该返回200。

正确的实现是什么?

最佳答案

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

200 代码意味着请求的操作已成功完成,因此删除后收到 200 的用户将假定该记录确实存在并已被删除。 404 意味着找不到端点。

如果 api 调用类似于 /api/record/1234,那么我建议返回 404,因为该 uri 不存在。

如果 api 调用类似于 /api/record?id=1234,那么我建议返回 403 或 500 错误,并显示一条消息,表明该记录不存在。这样用户就知道 /api/record 是有效的端点。

关于javascript - 如果用户尝试删除未找到的记录,服务器应该返回 200 还是 404?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42149758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com