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

这个Json结果应该返回404还是200?,json,http,rest,http-status-code-404,http-status-code-200,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" : } 非常简单 现在,我不知道如果这个人试图请求。。嗯。。产

我正试图根据StackExchange的API结果制作一个API

这是我的json输出

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

现在,我不知道如果这个人试图请求。。嗯。。产品或问题或其他任何东西,并且该项不存在

例如

我想我应该返回一个200和上面的Json,Items属性为空

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

想法/标准


我真的很想返回json,不管发生什么。为什么?配额的。即使结果为空,api服务也会受到合法的影响。

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

400错误请求

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

如果传递的参数无效,则返回400状态,表示请求已损坏

在这种情况下,我不会返回任何JSON消息。这是无效的,把它整理一下。StatusMessage可以显示“无效参数”,但没有内容


204无内容

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

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

您可能*想要传回一些附加信息,但可能不想

对于Twitter,假设您想搜索“@JohnDoe”用户,但未找到该用户。你可以说204,并说:“很抱歉,我们找不到@JohnDoe,但我们确实找到了这3个类似的人,这可能是你想要的。”在这种情况下,你不会推下他们的详细信息,只是推特上的名字


但是,如果您正在搜索一条推文,但未找到,则没有理由向客户端发送任何其他信息。就说它没有找到,故事就到此为止。

在我看来,我会使用404,因为这是标准的未找到代码。我喜欢它!我从来没有想过204:)是的,我用于传递错误请求数据的400。我想在这里指出,根据RFC,204不能包含消息体,因此总是由头字段后的第一个空行终止。
{
    "items": []
    ... snipped ....
}