【问题标题】:What is the correct HTTP status code for search results not found?未找到搜索结果的正确 HTTP 状态代码是什么?
【发布时间】:2019-05-01 18:55:06
【问题描述】:

我们正在用 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 状态代码是什么?

【问题讨论】:

  • 您可以考虑使用github apiyoutube api 的约定。我的意见,我使用 200 和空列表,与上述参考相同。
  • 如果没有找到任何东西被认为是与客户端相关的错误而不是返回 404,但通常这不应该是 IMO 本身的故障。 204 No Content 或多或少是为了通知客户端它可以保持其当前状态,因为处理的请求没有改变任何东西。因此,它更常用于PUT 操作。因此我会选择200 OK

标签: rest http spring-boot httpresponse


【解决方案1】:

有两种不同的场景:

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

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

204 状态码用于,例如,作为PUT 操作的结果,允许服务器指示该操作已成功应用于目标资源。它不适合上述场景。


更多详情请参阅this answer

【讨论】:

    猜你喜欢
    • 2017-06-27
    • 2023-03-14
    • 1970-01-01
    • 2018-02-24
    • 2019-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-06
    相关资源
    最近更新 更多