我对此进行了大量搜索并找到了不同的答案,我的情况也有所不同。
背景: 我有一个文件A,可能有发件人S
服务器X(所以不是浏览器)从服务器Y上的文档A请求发件人,但发件人不在。
服务器Y应该返回什么:
那么,最佳做法是什么,或者是否有另一种方法更适合这种做法。
提前致谢!
答案 0 :(得分:1)
我建议404 Not Found
最符合您所描述的“发件人缺席”
以防万一,您可以看到状态代码列表:https://en.wikipedia.org/wiki/List_of_HTTP_status_codes
答案 1 :(得分:0)
这里有两种情况。
如果您正在请求集合,例如:/ users并且服务器上没有可用的用户,则您的服务应返回200 OK并带有空列表。
如果您通过id请求资源,例如:/ users / id,如果用户不可用,则应返回404 NOT Found,因为您搜索的用户ID在服务器上不可用。
根据您的情况(假设您要求收集资源),我可能建议您使用空列表返回200 OK。如果您无法控制服务器,则可能需要在客户端进行空检查。
答案 2 :(得分:0)
广泛规则:不要试图使状态代码具体针对您的api或您的域模型的详细信息。这些是通用组件(如浏览器,缓存,代理)的消息,它们不需要了解有关域模型和集成协议的具体信息。
404:这绝对应该是... / sender / {sender_id}的答案。但在这种情况下,我们询问文件的发件人,没有发件人是正确答案......
4xx类响应代码表示an error in the client request。换句话说,客户问错了。 404特别暗示客户端将请求发送到错误的集成资源。
所以这不是你想要的。
204:我认为是正确的状态,但这主要用于端点一般不返回数据(例如发布,更新,删除),这可能会造成混淆
204具有非常特定的含义 - 表示响应中提供的表示零字节长。 “你让我把这个文件的内容发给你,我成功了,但顺便说一下文件是空的。”
所以如果缺席发件人的表示是零字节长,那么!但是如果表示是一个空的json对象
{}
然后204离开桌子。