2012-04-27 73 views
5

我试图根据StackExchange的api结果松散地进行API排序。这个Json结果应该返回一个404还是200?

所以这里是我的json输出。

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

非常该死的简单。

现在,我不确定如果这个人试图请求一个..这个产品或问题或其他什么,并且该项目不存在,该怎么办。

如..

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

我想我将返回200并且json以上,有项目属性为空。

其他想法我是返回该JSON与项目性质为空,但响应HTTP状态设置为404

思考/标准?

我真的想不管怎样都返回json。为什么?配额的。即使是空的结果仍然是api服务的合法命中。

+2

在我看来,我会使用404,因为那是标准未找到的代码。 – hawkfalcon 2012-04-27 04:27:56

回答

3

在我看来我将返回400 & 204状态:

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

400错误的请求

请求不能由于恶劣的语法来实现[2]

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

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


204无内容

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

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

您可能*想要传递一些额外的信息,可能不会。

对于Twitter,假设您想搜索'@JohnDoe'用户,但找不到它。你可以这样说:“对不起,我们找不到@JohnDoe,但我们确实找到了这三个类似的人,可能是你想要的”,在这种情况下,你不会推低他们的细节,只是Twitter的名字。

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

+0

喜欢它!我从来没有想过的204 :)是的,400的我用于通过坏请求数据。 – 2012-04-27 05:11:32

相关问题