尝试删除数据库中不再存在的条目时,后端服务最合适的 HTTP 响应是什么?



我的团队正在开发一个简单的后端服务,它提供操作ADDGETREMOVE非常简单的项目。所有这些都是由 http 请求触发的,除了从数据库中添加、获取和删除项目外,它们没有太多作用。

关于在数据库中不存在的项目(例如之前被删除)上触发REMOVE操作的特定场景,我们的问题是服务的响应应该是什么?我们一直在讨论200 + some specific message410 - resource gone等2XX和4XX可能性,但我们还没有达成共识。

我希望这不是自行车棚。

谢谢你的帮助。

服务的响应应该是什么?

请务必强调,状态代码旨在指示服务器尝试理解和满足客户端请求的结果。话虽如此,2xx状态代码不适合这种情况,应避免:

状态代码的2xx(成功)类指示已成功接收、理解和接受客户端的请求。

最合适的状态代码在4xx范围内:

状态代码的4xx(客户端错误)类指示客户端似乎出错。 除非响应HEAD请求,否则服务器应发送包含错误情况说明的表示,以及它是临时还是永久条件。

404状态代码似乎是您要查找的内容,因为它指示服务器找不到请求的资源:

6.5.4. 404 未找到

404(未找到)状态代码表示源服务器未找到目标资源的当前表示形式,或者不愿意披露目标资源存在。404状态代码不指示这种缺乏表示是暂时的还是永久的;[...]

如果您担心客户端将如何理解404响应,您可以向他们提供有效负载,说明此类资源不再可用。


请记住,ADDREMOVE不是标准的HTTP方法。希望这是一个错字,并且您正在使用POST(或PUT)和DELETE来表达对您的资源的操作。

最新更新