2014-05-07 29 views
0

我该如何重播一个头文件,这个头文件是作为请求发送到沙发数据库的,catch是我希望为数据库的所有文档做到,而不管显示函数如何。如何重播发送给请求的数据包头?

所以我会发送到沙发分贝的请求创建一个文档

curl -X POST -i -H "Content-Type: application/json" -H "User-Agent: CURL" --data-binary   @${INPUTFILE} http://someip:port/db 

其中db是在沙发db和输入文件已经创建了数据库名称将被发送到沙发分贝这将JSON文件存储。

这里的反应总是如下

HTTP/1.1 201 Created 
Server: CouchDB/1.5.0 (Erlang OTP/R16B01) 
Location: http://someip:port/db/14f49d6e537268402761d873560b1da9^M 
ETag: "1-ad9ad86f3ca9b8671cd0fcb9e546971f" 
Date: Mon, 10 Mar 2014 19:41:07 GMT^M 
Content-Type: text/plain; charset=utf-8 
Content-Length: 95 
Cache-Control: must-revalidate^M 

{"ok":true,"id":"14f49d6e537268402761d873560b1da9","rev":"1-ad9ad86f3ca9b8671cd0fcb9e546971f"} 

现在我需要得到响应的附加头。我知道我们可以很容易地通过showfunctions做到这一点,但赶上有我有POST请求发送到该节目的功能类似于如下

http://someip:port/db/_design/mydesigndoc/_show/myshowfunction 

一个URL,但我不想这样,我想知道是否可以发布到http://someip:port/db/并获取自定义响应头?

或者当我收到请求时,是否可以将地址前端结尾为http://someip:port/db并将其转发至http://someip:port/db/_design/mydesigndoc/_show/myshowfunction?我想这应该是可能的,但无法弄清楚。

任何帮助将不胜感激。由于

+0

虚拟主机帮助不大,行为怪异,任何其他解决方案来实现这一目标? – Abbyss

+0

得到它与更新处理程序和虚拟主机一起工作,现在的问题是,如果我在响应中覆盖头,那么默认响应头会丢失,不确定从哪里获得这些头寸,任何帮助将不胜感激。 – Abbyss

回答

1

终于想出了一个解决方案,我们适合我的使用情况。虽然我失去了由Couch生成的标题作为回应,但对于我的情况,我确定。

更新处理程序,重写URL,显示函数和虚拟主机组合帮助我。

正如我的问题发言中提到,我想打的网址是

http://someip:port/dbname?version=1 

如果我有自由去改变这一点,我就已经解决了这个问题,以较少的努力。但是,这是将在POST数据库中创建文档的POST请求命中的URL。

有两种解决方案,一种是创建不同的dbname如果可以这样做,并将此URL重定向到重写中的更新处理程序URL或直接使用vhosts。

如果你不能DBNAME更改为不同的事情,这个问题比较复杂,如果你把

http://someip:port/dbname?version=1 
在虚拟主机

,将它更新处理,则无法从被褥UI访问数据库作为从Futon UI获取请求会直接更新处理程序,并引发HTTP方法不匹配错误。

为了克服这个问题,创建从

someip:port/dbname?version=1 

来更新处理器指导的请求,并要求重写处理程序来

someip:port/dbname 

到放映功能,其显示默认视图从蒲团看到。

如果您可以自由更改数据库名称,那么最好的解决方案是将URL重定向到DB设计文档的POST更新处理程序。