没有结果的 REST 搜索的 HTTP 状态代码

Dan*_*fer 3 rest json api-design http

我有一个用于搜索的 REST 端点。

GET /person?firstname=john&name=smith

结果是一个带有 HTTP 状态代码的集合200 OK被返回:

[
   {
      "id":11,
      "firstname":"John",
      "name":"Smith",
      "birthday":"1996-03-08"
   },
   {
      "id":18,
      "firstname":"John",
      "name":"Smith",
      "birthday":"1963-07-11"
   }
]
Run Code Online (Sandbox Code Playgroud)

空搜索结果的正确 HTTP 状态代码和有效负载是什么?

  • 200 OK带有空集合的HTTP 状态[]

  • 204 No Content带有空集合的HTTP 状态[]

  • 204 No Content带有空正文的HTTP 状态

Jua*_*anR 5

我会推荐:

HTTP Status 200 OK with a empty collection []
Run Code Online (Sandbox Code Playgroud)

原因是 204 表示没有内容要发回,这不是您调用的结果。

在你的情况下,有东西要送回来。这是一个 Json 结果,恰好由一个空集合组成。

更新:

从 HTTP 协议定义:

10.2.5 204 No Content:服务器已经完成请求但不需要返回实体主体,并且可能想要返回更新的元信息。

和:

204 响应不能包含消息体,因此总是由头字段之后的第一个空行终止。