未找到搜索结果的正确 HTTP 状态代码是什么?

Kri*_*ish 0 rest http httpresponse spring-boot

我们正在用 Java 实现 REST API。

对于 GET REST 端点,如果我搜索某些内容:

  1. 如果找到任何记录/记录,则它将返回 200 状态代码和结果/结果。

  2. 如果没有找到记录,正确的 HTTP 状态代码是什么?

当我在 Google 和 SO 中搜索时,我发现了不同的答案,例如:

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
Run Code Online (Sandbox Code Playgroud)

如果未找到记录或未找到搜索结果,正确的 HTTP 状态代码是什么?

cas*_*lin 6

有两种不同的场景:

  • 要检索没有项目的资源集合(例如GET /products?name=foo)的表示,请返回200一个空数组。

  • 要检索不存在的单个资源(例如GET /products/1)的表示,请返回404

204状态码是为了被使用,例如,作为结果PUT操作,允许服务器以指示该动作已成功地应用到目标资源。它不适合上述场景。


有关更多详细信息,请参阅此答案