【问题标题】:REST API code/message for missing parent resource缺少父资源的 REST API 代码/消息
【发布时间】:2013-03-01 07:48:54
【问题描述】:
在请求构成另一个资源一部分的资源时,我正在寻找有关正确响应代码和消息的指导。
例如,一个 GET 请求:
用户/{id}
如果用户不存在,将返回 404,并显示未找到用户资源的消息。
我的问题是,当没有找到用户资源时,应该返回什么:
用户/{id}/朋友
我目前返回的代码/消息与第一个示例相同。我应该返回与朋友资源相关的消息吗?我个人认为让 API 客户端知道找不到父资源会更有帮助,以防您有更大的 URI 链。
【问题讨论】:
标签:
api
rest
http-status-code-404
httpresponse
【解决方案1】:
我很想返回一个400 Bad Request 标头,并将错误消息放在响应的正文中。不幸的是,在这种情况下没有正确或错误的答案,所以选择最适合您和您的应用程序的方法。
【解决方案2】:
在这个特定的示例中,如果要让客户端区分对不存在的用户的好友请求和对没有好友的用户的好友请求,我认为最有意义的是在第一种情况下返回 404,在第二种情况下返回 200 和一个空集。
换句话说,“none”对朋友来说是一个有效值。没有用户存在但他们的(可能为空的)朋友列表不存在的情况,因此在为父资源发出 404 时不会有任何歧义。
【讨论】:
-
我正在思考与 OP 相同的问题,这对于我的特定用例来说也是正确的方法。为了进一步补充您的情况,Wikipedia 声明对于404,“客户端的后续请求是允许的”。我认为这是正确的,因为在某个时候具有该 ID 的用户将开始存在是可行的,而 400 意味着由于客户端错误,请求是错误的,并且将来永远不会有效。跨度>