17

假设我articles/articles.

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

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

我能想到:

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

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

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

4

3 回答 3

16

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另一方面,使用空集合将满足您的需求。

于 2012-11-26T11:46:40.657 回答
6

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

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

200有一个空列表是正确的。

于 2012-11-26T11:42:36.050 回答
4

返回 200 和一个空数组。

于 2012-11-26T15:21:09.203 回答