没有结果的

时间:2017-07-17 19:52:39

标签: json rest http api-design

我有一个搜索的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"
   }
]

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

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

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

  • 身份为空的HTTP状态204 No Content

3 个答案:

答案 0 :(得分:3)

IMO第一个案例:

  • HTTP状态200 OK,空集合[]

然后你不必检查204并使用返回的内容,这是一个空列表。

答案 1 :(得分:2)

我建议:

HTTP Status 200 OK with a empty collection []

原因是204表示没有内容可以发回,而这不是您通话的结果。

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

<强>更新

来自HTTP协议定义:

  

10.2.5 204否内容:服务器已完成请求,但确实如此   不需要返回实体主体,并且可能希望返回更新   的元信息。

  

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

答案 2 :(得分:1)

在设计Web应用程序时,这是一个常规问题。 200 ok with empty collection 将是我的方式。因为:

  • 证明您的API确实返回了响应
  • 在客户端处理200会容易得多,因为我可能认为你正在使用Javascript,其他响应代码可能会给你一个错误
相关问题