5

我正在尝试根据 StackExchange 的 api 结果松散地制作一个 API。

所以这是我的 json 输出。

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

非常简单。

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

例如..

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

我在想我会返回一个 200 和上面的 Json,而 Items 属性是空的。

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

想法/标准?

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

4

1 回答 1

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 名称。

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

于 2012-04-27T05:09:52.823 回答