哪个HTTP代码用于REST API中的空子资源?

时间:2012-11-26 11:35:34

标签: rest collections semantics http-status-codes

假设我在articles处有一个资源/articles

这些文章可能包含相关文章,因此我通过GETting /articles/{id}/related获取它们。

我应该返回的是没有相关文章?

我能想到:

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

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

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

3 个答案:

答案 0 :(得分:15)

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可以满足您的需求。

答案 1 :(得分:6)

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

由于相关原因,

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

带有空列表的

200恰到好处。

答案 2 :(得分:4)

使用空数组返回200。