2

我这样查询视图:

/db/_design/myviewname/_view/foo?key=%22ABC123%22

结果如下:

{
 total_rows: 3,
 offset: 3,
 rows: [ ]
}

都好。

由于没有找到文档,我想从节目或列表中抛出 404。

那可能吗?

4

2 回答 2

3

根据wiki,您可以通过 Show/List 函数发出重定向响应。因此,也可以发送任意 HTTP 状态代码。(如 404)

function (head, req) {
    start({ code: 404 });
}
于 2012-08-07T17:37:21.807 回答
0

我不确定404是否是正确的选择。这真的意味着没有找到

从 W3 HTTP/1.1 rfc2616

10.4.5 404 未找到

服务器未找到任何与请求 URI 匹配的内容。没有说明这种情况是暂时的还是永久性的。如果服务器通过一些内部可配置的机制知道旧资源永久不可用并且没有转发地址,则应该使用 410 (Gone) 状态代码。当服务器不希望确切地揭示请求被拒绝的原因或没有其他响应适用时,通常使用此状态代码。

我认为还有另一个更合适的响应状态代码。204 No Content这听起来更像是您真正想告诉客户的内容。

10.2.5 204 无内容

服务器已完成请求,但不需要返回实体主体,并且可能希望返回更新的元信息。响应可能包括实体头形式的新的或更新的元信息,如果存在,应该与请求的变体相关联。

如果客户端是用户代理,它不应该改变导致请求被发送的文档视图。这个响应主要是为了允许输入动作发生而不导致用户代理的活动文档视图发生变化,尽管任何新的或更新的元信息应该应用于当前在用户代理的活动视图中的文档。

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

现在要设置自定义响应标头,您只需在传递给 start 函数的对象中指定它,就像这样。

function(head, req) {
  return { "code": 204 };
}
于 2012-08-07T17:44:08.530 回答