我的团队正在开发一种简单的后端服务,该服务为操作ADD
,GET
和REMOVE
提供了一个非常简单的项目。所有这些都是由http请求触发的,除了从数据库中添加,获取和删除项目外,它们并没有太多作用。
对于在数据库中不存在的项目(例如,之前已删除)上触发REMOVE
操作的特定场景,我们的问题是服务的响应是什么? 在2XX和4XX等可能性中,我们一直在辩论诸如200 + some specific message
,410 - resource gone
之类的选项,但是我们尚未达成共识。
我希望这不是Bikeshedding。
谢谢您的帮助。
答案 0 :(得分:1)
服务的响应应该是什么?
重要的是要强调status codes是为了表示服务器试图理解并满足客户请求的结果。话虽如此,2xx
状态代码在这种情况下不合适,应避免使用
状态代码
2xx
(成功)类别表示已成功接收,理解并接受了客户的请求。
最合适的状态代码应在4xx
范围内:
状态代码的
4xx
(客户端错误)类表明客户端似乎已经出错。除非响应HEAD
请求,否则服务器应发送表示形式,其中包含错误情况的说明以及错误情况是暂时的还是永久的情况。
404
状态代码似乎正是您想要的,因为它表明服务器找不到所需的资源:
404
(未找到)状态码表示原始服务器未找到目标资源的当前表示或不愿意透露该资源的存在。404
状态代码不表示这种缺乏表示是暂时的还是永久的; [...]
如果您担心客户端如何理解404
响应,则可以向他们提供有效载荷,以表明此类资源不再可用。
请记住,ADD
和REMOVE
不是标准的HTTP方法。希望这是一个错字,并且您正在使用POST
(或PUT
)和DELETE
来表示对资源的操作。