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

时间:2018-11-29 16:35:05

标签: rest http spring-boot httpresponse

我们正在用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

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

1 个答案:

答案 0 :(得分:1)

有两种不同的情况:

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

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

例如,PUT操作将导致使用204状态代码,从而允许服务器指示该操作已成功应用于目标资源。它不适用于上述情况。


有关更多详细信息,请参见this answer