这个Json结果应该返回404还是200?

时间:2012-04-27 04:22:35

标签: json http rest http-status-code-404 http-status-code-200

我试图根据StackExchange的api结果松散地进行API排序。

所以这是我的json输出。

{
    "items" : [ ... objects in here .... ]
    "page" : 
    "page_size" :  
    "total_pages" : 
    "total_items_count" :  
    "maximum_quota" : 
    "remaining_quota" : 
}

非常简单。

现在,我不确定如果该人试图请求......产品或问题或其他什么,该项目是否存在。

例如..

{
    "items": []
    ... snipped ....
}

我以为我会返回200和上面的Json,其中Items属性为空。

我的另一个想法是返回带有items属性的json,但是将响应http状态设置为404。

思想/标准?

无论如何,我真的想要回归json。为什么?配额。即使是空洞的结果仍然是api服务的合法打击。

1 个答案:

答案 0 :(得分:3)

在我看来,我会回归400& 204状态:

http://en.wikipedia.org/wiki/List_of_HTTP_status_codes

400错误请求

由于语法错误,无法满足请求。[2]

如果传递无效参数,则返回400状态,表示请求不正确。

在这种情况下,我不会返回任何JSON消息。这是无效的,整理出来。 StatusMessage可以说'无效参数',但没有内容。


204无内容

服务器成功处理了请求,但未返回任何内容。[2]

如果您传递了有效的参数,但未找到内容,则可以说找不到它。

您可能*想要传回一些其他信息,可能不会。

对于Twitter,说你想搜索'@JohnDoe'用户,但是找不到它。您可以说204,其中:“抱歉,我们找不到@JohnDoe,但我们确实找到了这3个类似的人,可能就是您想要的”,在这种情况下,您不会推断他们的详细信息,只有Twitter名称。 / p>

但是,如果您正在搜索推文,但未找到,则没有理由向客户端发送任何其他信息。只是说它没有找到,故事的结尾。