协慌网

登录 贡献 社区

用于更新和删除的 HTTP 状态代码?

我应该为UPDATEPUT )和DELETE设置什么状态代码(例如产品成功更新)?

答案

对于PUT请求: HTTP 200HTTP 204应该意味着 “资源更新成功”。

对于DELETE请求: HTTP 200HTTP 204应表示 “资源已成功删除”。还可以返回HTTP 202 ,这意味着服务器接受该指令并且 “资源被标记为删除”。

9.6 PUT

如果修改了现有资源,则应该发送 200(OK)或 204(No Content)响应代码 > 以指示请求成功完成。

9.7 删除

如果响应包括描述状态的实体,则成功响应应为 200(OK),如果操作尚未执行,则应为 202(已接受); 如果操作已颁布但响应不包括,则应为 204(无内容)一个实体。

来源: w3.org:HTTP / 1.1 方法定义

HTTP 200 OK:成功 HTTP 请求的标准响应。实际响应取决于使用的请求方法。

HTTP 204 No Content:服务器成功处理了请求,但未返回任何内容

来源: HTTP 状态代码列表:2xx 成功

简短回答:对于 PUT 和 DELETE,您应该发送 200(OK)或 204(No Content)。

答案很长:这是一个完整的决策图(点击放大)。

HTTP 1.1决策图

资料来源: https//github.com/for-GET/http-decision-diagram

以下是一些提示:

删除

  • 200 (如果您想在响应中发送一些额外的数据)或204 (推荐)。

  • 202已删除的操作尚未提交。

  • 如果没有要删除的内容,请使用204 404 (DELETE 操作是幂等的,删除已删除的项目操作成功 ,因此您可以返回204 ,但是幂等并不一定意味着相同的响应)

其他错误:

  • 400 Bad Request (格式错误的语法或错误的查询很奇怪,但可能)。
  • 401 未授权的身份验证失败
  • 403 禁止访问 :授权失败或应用程序 ID 无效。
  • 405 不允许 。当然。
  • 409在复杂系统中可以实现资源冲突
  • 501,502在错误的情况下。

如果您要更新集合的元素

  • 200/204与上述 DELETE 相同的原因。
  • 202如果尚未提交操作。

引用的元素不存在:

  • PUT 可以是201 (如果你创建了元素,因为这是你的行为)
  • 404如果您不想通过 PUT 创建元素。

  • 400 Bad Request (格式错误的语法或错误的查询比 DELETE 的情况更常见)。

  • 401 未经授权
  • 403 Forbidden :身份验证失败或应用程序 ID 无效。
  • 405 不允许 。当然。
  • 409在复杂系统中可以实现资源冲突 ,如 DELETE 中那样。
  • 422 不可处理的实体它有助于区分 “错误请求”(例如格式错误的 XML / JSON)和无效字段值
  • 501,502在错误的情况下。