用于更新和删除的HTTP状态码?
我应该为UPDATE
( PUT
)和DELETE
(例如成功更新产品)设置什么状态代码?
对于PUT请求: HTTP 200或HTTP 204应该暗示“资源已成功更新”。
对于DELETE请求: HTTP 200或HTTP 204应该暗示“资源已成功删除”。 HTTP 202也可以被返回,这意味着该指令被服务器接受并且“资源被标记为删除”。
9.6 PUT
如果现有资源被修改,则应发送200(OK)或204(无内容)响应代码以指示成功完成请求。
9.7删除
如果响应包括一个描述状态的实体,那么成功的响应应该是200(OK),如果该行为尚未实施,则为202(接受),如果该行为已经颁布但响应不包括则为204(无内容)一个实体。
资料来源:w3.org:HTTP / 1.1方法定义
HTTP 200 OK:成功HTTP请求的标准响应。 实际的响应将取决于使用的请求方法。
HTTP 204无内容:服务器成功处理了请求,但没有返回任何内容
来源:HTTP状态代码列表:2xx成功
简短回答:对于PUT和DELETE,您应该发送200(OK)或204(无内容)。
长答案:这是一个完整的决策图(点击放大)。
来源:https://github.com/for-GET/http-decision-diagram
这里有一些提示:
删除
200 (如果你想在响应中发送一些额外的数据)或204 (推荐)。
202删除的操作尚未提交。
如果没有东西需要删除,可以使用204或404 (DELETE操作是幂等的,删除已经删除的项目是操作成功的,所以你可以返回204 ,但是幂等不一定意味着相同的响应)
其他错误:
放
如果您正在更新集合的元素
引用的元素不存在:
404如果你不想通过PUT创建元素。
400错误请求(格式错误或比DELETE更常见的错误查询)。