其中HTTP代码,用来在一个REST API空子资源?(Which HTTP code to use

2019-07-04 03:25发布

比方说,我有一个资源articles ,在/articles

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

我应该什么样的回报是有没有相关的文章?

我能想到的:

  • 404 Not Found ,也许有一个空的集合
  • 204 No Content
  • 200 Found与一个空集合

有何意见? (请在参数)

顺便说一句,它可以适用于分页。 如果我要求的2 3页,然后在第3页将返回一个空集,它应该是一个404

Answer 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与另一方面空集将满足您的需要。



Answer 2:

我不会用404 -这将告诉客户端它“我无法告诉你是否有相关型号的文章”。 如果{ID}给出的根本无法识别这将是适当的。 你需要的是一个积极的响应告诉客户,是的,很好的问题,这里是相关的文章(空)名单。

204也不好,相关的原因。 它指出没有答案 ,这仍然是从回答有,但恰好是空列表不同。 它描述更有意义的POST比一个GET

200与空列表是恰到好处。



Answer 3:

返回200,一个空数组。



文章来源: Which HTTP code to use for an empty subresource in a REST API?