从节目/列表中投掷404

时间:2012-08-07 12:30:59

标签: couchdb

我查询这样的视图:

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

结果如下:

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

一切都很好。

由于未找到任何文档,我想从节目或列表中删除404.

这可能吗?

2 个答案:

答案 0 :(得分:3)

根据wiki,您可以通过显示/列表功能发出重定向响应。因此,还可以发送任意HTTP状态代码。 (如404)

function (head, req) {
    start({ code: 404 });
}

答案 1 :(得分:0)

我不确定 404 是否是正确的选择。这实际上意味着找不到

来自W3 HTTP / 1.1 rfc2616

  

10.4.5 404 Not Found

     
    

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

  

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

  

10.2.5 204 No Content

     
    

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

         

如果客户端是用户代理,则它不应该从导致请求发送的文档视图中更改其文档视图。此响应主要是为了允许在不导致更改用户代理的活动文档视图的情况下进行操作的输入,尽管任何新的或更新的元信息应该应用于当前在用户代理的活动视图中的文档。

         

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

  

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

function(head, req) {
  return { "code": 204 };
}