在请求构成另一个资源的一部分的资源时,我正在寻找一些关于正确响应代码和消息的指导。
例如,一个 GET 请求:
用户/{id}
如果用户不存在,将返回 404,并显示未找到用户资源的消息。
我的问题是,当没有找到用户资源时,应该返回什么:
用户/{id}/朋友
我目前正在返回与第一个示例相同的代码/消息。我应该返回与朋友资源特别相关的消息吗?我个人认为让 API 客户端知道找不到父资源会更有帮助,以防您有更大的 URI 链。
在请求构成另一个资源的一部分的资源时,我正在寻找一些关于正确响应代码和消息的指导。
例如,一个 GET 请求:
用户/{id}
如果用户不存在,将返回 404,并显示未找到用户资源的消息。
我的问题是,当没有找到用户资源时,应该返回什么:
用户/{id}/朋友
我目前正在返回与第一个示例相同的代码/消息。我应该返回与朋友资源特别相关的消息吗?我个人认为让 API 客户端知道找不到父资源会更有帮助,以防您有更大的 URI 链。
在这个特定的例子中,如果要让客户端区分一个不存在的用户的好友请求和一个没有好友的用户的好友请求,我认为返回 404 是最有意义的第一种情况,第二种情况下有 200 个空集。
换句话说,“none”对朋友来说是一个有效值。没有用户存在但他们的(可能为空的)朋友列表不存在的情况,因此在为父资源发出 404 时不会有任何歧义。
我很想返回一个400 Bad Request
标头,并将错误消息放在响应的正文中。不幸的是,在这种情况下没有正确或错误的答案,所以选择最适合您和您的应用程序的方法。