首页 文章

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

提问于
浏览
1069

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

8 回答

  • 8

    修改资源时,响应代码应为 200 (“OK”) . 如果资源状态以更改URI到资源的方式更改(例如,重命名用户帐户),则 response code is 301 (“Moved Permanently”) 和Location标头应提供新URI .

    删除对象时,响应代码 should be 200 (“OK”).

    请点击以下链接了解更多详情 - status code for rest

  • 114

    由于问题深入研究 DELETE "should"返回 200 vs 204 ,值得考虑的是有些人建议返回带有链接的实体,因此首选的是 200 .

    “而不是返回204(无内容),API应该是有用的,并建议去的地方 . 在这个例子中,我认为提供的一个明显的链接是”'somewhere.com/container/'(减去'资源')“ - 客户端刚删除资源的容器 . 也许客户希望删除更多资源,这将是一个有用的链接 . “

    http://blog.ploeh.dk/2013/04/30/rest-lesson-learned-avoid-204-responses/

    如果客户端遇到204响应,它可以放弃,转到API的入口点,或者返回到它访问的先前资源 . 这两种选择都不是特别好 .

    我个人不会说204是错的(作者也没有;他说“讨厌”)因为客户端的良好缓存有很多好处 . 最好的方法是保持一致 .

  • -1

    除了200和204之外,205 (Reset Content)可能是有效的响应 .

    服务器已经完成了请求,用户代理应该重置文档视图,导致请求被发送... [例如]清除给出输入的表单 .

  • 13

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

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

    HTTP 1.1 decision diagram

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

  • 1653

    2014年6月RFC7231废弃RFC2616 . 如果您通过HTTP进行REST,那么RFC7231准确描述了GET,PUT,POST和DELETE的预期行为

  • 6

    以下是一些提示:

    DELETE

    200(如果要在响应中发送一些额外数据)或204(推荐) . 202已删除的操作尚未提交 . 如果没有要删除的内容,请使用204或404(DELETE操作是幂等的,删除已删除的项目操作成功,因此您可以返回204,但是,幂等并不一定意味着相同的响应)其他错误:400 Bad请求(格式错误的语法或错误的查询很奇怪,但可能) . 401未授权的身份验证失败403禁止访问:授权失败或应用程序ID无效 . 405不允许 . 当然 . 409在复杂系统中可以实现资源冲突 . 并且501,502在出错的情况下 .

    PUT

    如果您要更新集合200/204的元素,其原因与上面的DELETE相同 . 202如果尚未提交操作 . 引用的元素不存在:PUT可以是201(如果您创建了元素,因为这是您的行为)404如果您不想通过PUT创建元素 . 400 Bad Request(格式错误的语法或错误的查询比DELETE更常见) . 401 Unauthorized 403 Forbidden:身份验证失败或应用程序ID无效 . 405不允许 . 当然 . 409在复杂系统中可以实现资源冲突,如DELETE中所示 . 422不可处理的实体有助于区分“错误请求”(例如格式错误的XML / JSON)和无效字段值501和502错误 .

  • 2

    对于 PUT 请求: HTTP 200HTTP 204 应该暗示"resource updated successfully" .

    对于 DELETE 请求: HTTP 200HTTP 204 应该暗示"resource deleted successfully" . 也可以返回 HTTP 202 ,这意味着服务器和"resource was marked for deletion"接受了该指令 .

    9.6 PUT如果修改了现有资源,则应该发送200(OK)或204(No Content)响应代码>以指示请求成功完成 . 9.7删除成功的响应应该是200(OK),如果响应包括描述状态的实体,202(已接受)如果操作尚未执行,或204(无内容)如果操作已经颁布但响应确实如此不包括实体 .

    资料来源:w3.org: HTTP/1.1 Method Definitions

    HTTP 200 OK:成功HTTP请求的标准响应 . 实际响应取决于使用的请求方法 . HTTP 204 No Content:服务器成功处理了请求,但未返回任何内容

    资料来源:List of HTTP status codes: 2xx Success

  • 750

    RFC 2616描述了which status codes to use .

    不,它始终是_374669 .

相关问题