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

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


对于PUT请求: HTTP 200HTTP 204应该暗示“资源已成功更新”。

对于DELETE请求: HTTP 200HTTP 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(无内容)。

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

HTTP 1.1决策图

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


这里有一些提示:

删除

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

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

  • 如果没有东西需要删除,可以使用204404 (DELETE操作是幂等的,删除已经删除的项目是操作成功的,所以你可以返回204 ,但是幂等不一定意味着相同的响应)

  • 其他错误:

  • 400错误请求(格式错误或错误的查询很奇怪,但可能)。
  • 401未经授权的身份验证失败
  • 403禁止:授权失败或无效的应用程序ID。
  • 405不允许。 当然。
  • 409资源冲突可以在复杂的系统是不可能的。
  • 501,502在错误的情况下。
  • 如果您正在更新集合的元素

  • 200/204 ,原因与上面的DELETE相同。
  • 202如果操作还没有被提交。
  • 引用的元素不存在:

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

  • 400错误请求(格式错误或比DELETE更常见的错误查询)。

  • 401未经授权
  • 403禁止:认证失败或无效的应用程序ID。
  • 405不允许。 当然。
  • 409资源冲突可以在复杂系统成为可能,如DELETE。
  • 501,502在错误的情况下。
  • 链接地址: http://www.djcxy.com/p/3753.html

    上一篇: HTTP status code for update and delete?

    下一篇: Storing password in tables and Digest authentication