【问题标题】:Which HTTP code to use for an empty subresource in a REST API?哪个 HTTP 代码用于 REST API 中的空子资源?
【发布时间】:2012-11-13 21:09:26
【问题描述】:

假设我有一个资源articles/articles

这些文章可能有相关文章,所以我通过GETting /articles/{id}/related获取它们。

如果没有相关文章我应该返回什么?

我能想到:

  • 404 Not Found,可能是一个空集合
  • 204 No Content
  • 200 Found 有一个空集合

有什么建议吗? (请给出论据)

顺便说一下,它可能适用于分页。如果我请求第 3 页,共 2 页,那么第 3 页将返回一个空集,是否应该是 404

【问题讨论】:

    标签: rest collections semantics http-status-codes


    【解决方案1】:

    404 不是您想要的。这是一个错误条件。你的情况不是错误。客户目前不知道有没有相关文章,想知道。这不是错误。

    204 也不合适。 RFC 2616 指出:

      The server has fulfilled the request but does not need to return an
      entity-body, and might want to return updated metainformation. The
      response MAY include new or updated metainformation in the form of
      entity-headers, which if present SHOULD be associated with the
      requested variant.
    

    204 没有指明没有相关文章。它只是说服务器不需要发送数据。

    另一方面,200 与空集合将满足您的需求。

    【讨论】:

    • 200 是一个很好的匹配,但请远离 200 Found,因为 302 Found 已经存在。
    【解决方案2】:

    我不会使用404——它会告诉客户“我无法告诉您是否有任何相关文章”。如果给定的 {id} 根本无法识别,这将是合适的。你想要的是一个积极的回应告诉客户,是的,好问题,这里是相关文章的(空)列表。

    204 也不好,原因是相关的。它指定了没有答案,这仍然不同于存在但恰好是空列表的答案。它的描述对于POST 比对于GET 更有意义。

    200 带有一个空列表就可以了。

    【讨论】:

      【解决方案3】:

      返回 200 和一个空数组。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-04-20
        • 1970-01-01
        • 1970-01-01
        • 2017-03-12
        • 2018-07-05
        • 2013-03-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多