2012-11-26 37 views
14

比方说,我有一个资源articles/articles哪个HTTP代码用于REST API中的空子资源?

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

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

我能想到的:

  • 404 Not Found,可能与空收集
  • 204 No Content
  • 200 Found与空收集

有何意见? (请给出意见)

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

回答

6

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

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

200与一个空列表是恰到好处。

14

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

+0

200是一个很好的匹配,但远离'200 Found',因为_302 Found_已存在。 –

4

用空数组返回200。