Rest 未找到搜索结果的正确HTTP状态代码是什么?
我们正在用Java实现RESTAPI 对于GET REST endpoint,如果我搜索某些内容:Rest 未找到搜索结果的正确HTTP状态代码是什么?,rest,http,spring-boot,httpresponse,Rest,Http,Spring Boot,Httpresponse,我们正在用Java实现RESTAPI 对于GET REST endpoint,如果我搜索某些内容: 如果找到任何记录/记录,它将返回200个状态代码和结果/结果 如果未找到记录,正确的HTTP状态代码是什么 当我在谷歌搜索时,我发现了不同的答案,比如: 200 with empty list (if the API response is item but NOT list, then I can't send empty list) 204 No Content 404 Not Found
200 with empty list (if the API response is item but NOT list, then I can't send empty list)
204 No Content
404 Not Found
如果未找到记录或未找到搜索结果,正确的HTTP状态代码是什么?有两种不同的情况:
- 要检索没有项目的资源集合(例如,
)的表示形式,请使用空数组返回GET/products?name=foo
- 要检索不存在的单个资源的表示形式(例如,
),请返回GET/products/1
PUT
操作的结果,允许服务器指示操作已成功应用于目标资源。它不适合上述场景
有关更多详细信息,请参阅。有两种不同的情况:
- 要检索没有项目的资源集合(例如,
)的表示形式,请使用空数组返回GET/products?name=foo
- 要检索不存在的单个资源的表示形式(例如,
),请返回GET/products/1
PUT
操作的结果,允许服务器指示操作已成功应用于目标资源。它不适合上述场景
请参阅进一步的细节。您可以考虑使用OR的约定。我的意见是,我使用了200和空列表,与上面的参考文献相同。如果没有找到任何东西被认为是与客户端相关的错误,那么返回404,虽然在一般情况下,这本身不应该是一个失败。
204没有任何内容
或多或少是为了通知客户端,它可以保持其当前状态,因为处理的请求没有任何更改。因此,它更常用于PUT
操作。因此,我会选择<代码> 200 OK 可能的副本可以考虑使用。我的意见是,我使用了200和空列表,与上面的参考文献相同。如果没有找到任何东西被认为是与客户端相关的错误,那么返回404,虽然在一般情况下,这本身不应该是一个失败。204没有任何内容
或多或少是为了通知客户端,它可以保持其当前状态,因为处理的请求没有任何更改。因此,它更常用于PUT
操作。因此,我会选择200 OK
可能重复的