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

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

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

    如果未找到记录或未找到搜索结果,正确的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
    可能重复的