【问题标题】:Is it correct to return 200 Ok HTTP status for a POST request?为 POST 请求返回 200 Ok HTTP 状态是否正确?
【发布时间】:2017-07-16 19:21:34
【问题描述】:

通常,我们使用 POST 在服务器端创建资源。
因此,理想情况下,如果一切正常,服务器应该以201 Created HTTP 状态响应,或者在异步操作的情况下以202 Accepted HTTP 状态响应。

是否存在 POST 请求可以返回 200 OK HTTP 状态的有效场景?
或者我们不应该对 POST 请求使用200 OK HTTP 状态?

【问题讨论】:

    标签: api http post


    【解决方案1】:

    我认为 200 是对 Internet 上 POST 请求的非常常见的响应。用起来就好了。

    来自RFC 7231

    6.3.1。 200 确定

    200(OK)状态码表示请求成功。 在 200 响应中发送的有效负载取决于请求方法。
    对于本规范定义的方法,其预期含义
    有效载荷的大小可以概括为:

    获取目标资源的表示;

    HEAD 与 GET 相同的表示,但没有 表示 数据;

    POST 状态的表示,或从中获得的结果, 行动;

    PUT、DELETE 表示动作的状态;

    OPTIONS 表示通信选项;

    TRACE 代表接收到的请求消息 结尾 服务器。

    以及第 4.3.3 节:

    对 POST 请求的响应仅在包含以下内容时才可缓存 明确的新鲜度信息(参见 [RFC7234] 的第 4.2.1 节)。 但是,POST 缓存并未得到广泛实施。对于情况下, 源服务器希望客户端能够缓存一个结果 以一种可以被以后的 GET 重用的方式 POST,源服务器可以 发送包含结果和 Content-Location 的 200(OK)响应 与 POST 的有效请求具有相同值的标头字段 URI(第 3.1.4.2 节)。

    【讨论】:

    • 但是如果我们使用它来开发 API,我们可以称它为一种宁静的方法吗?
    • @DesirePRG 当然,为什么不呢? RESTful 是对远程 API 的架构属性的描述。 RESTful 甚至不需要使用 HTTP,更不用说使用特定的返回码了。
    【解决方案2】:

    是的,您可以返回200 Ok HTTP 状态,但您应该返回响应BODY

    一般来说,根据您的 API 要求,我们有 3 个选项:

    1. 返回201 Created HTTP 状态,带有EMPTY BODY
      如果您不需要返回响应正文。

    2. 返回200 Ok HTTP 状态,带有BODY
      如果您需要返回响应正文 [包含已创建的资源]。

    3. 返回202 Accepted HTTP 状态,带有EMPTY BODY
      以防操作将排队。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-22
      • 2013-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-08
      • 1970-01-01
      相关资源
      最近更新 更多