【发布时间】:2018-01-15 19:24:57
【问题描述】:
根据我对 RESTful API 的理解:
-
如果我要求的 ID 不存在(例如
李> 1234563从来没有发布过任何东西)/users/999/posts用户 999 不存在),它应该返回404状态码。
我在这里看到的问题通常与这两种情况有关。
现在我的问题是当我没有数据时,我使用的是有效 ID,但我应该返回一个对象而不是列表。
例如,假设由于某种原因,当我请求/users/999 时,我不想总是返回用户的地址。我有这条不同的路线:/users/999/address,它返回一个地址对象。
如果该用户没有任何地址,应该返回什么?一个空对象 {} ? 404 状态码? 204 状态码?
我认为空对象是一致的?
谷歌搜索,我找到了this 说:
返回给定召唤师 ID 的联赛或球队的调用现在将返回 404 而不是空对象。当请求的资源(即联赛或球队)不存在时,此行为是正确的 RESTful 行为。
所以我对正确的 RESTful 行为应该是什么感到有点困惑。
谢谢!
【问题讨论】:
-
如果地址资源不存在,而客户端请求它(因为对资源状态的错误认识),客户端出错,这就是
404 -
@IlioCatallo:但是客户应该怎么知道这个特定用户有没有地址?
-
按照 HATEOAS 约束的规定,我将通过使用从客户端资源到地址资源的超媒体控件来明确关系
-
我认为没有任何规则可以严格回答您的问题,但我个人会返回 200 或 204,因为请求成功。用户没有地址这一事实是另一点,但不应成为返回 http 错误状态的理由。除非地址是数据库中不可为空的字段。
标签: rest asp.net-web-api