我怎么能重放一个头是在请求发送到沙发数据库



我如何才能重放作为请求发送到couch db的头,catch是我想为数据库的所有文档做这件事,而不管显示函数。

所以我将发送一个请求给db创建一个文档作为

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

其中db是我已经在couch db中创建的数据库名称,输入文件是要发送到couch 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轻松地做到这一点,但这里的问题是,我必须向该show函数的url发送post请求,如下所示

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

但我不想这样,我想知道是否有可能只是发布到http://someip:port/db/并获得自定义响应头回来?

或者有一种方法,我可以前端地址到http://someip:port/db和转发它到http://someip:port/db/_design/mydesigndoc/_show/myshowfunction当我收到一个请求?我想这应该是可能的,但我想不出来。

任何帮助都将非常感激。由于

最后想出了一个解决方案,我们适合我的用例。虽然我丢失了Couch在响应中生成的头,但对于我的情况,我可以接受。

更新处理程序,重写URL,显示功能和vhosts组合帮助了我。

正如我的问题声明中提到的,我想要访问的url是

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

如果我有改变这一点的自由,我会用更少的努力解决这个问题。但是,这个URL将被POST请求击中,用于在数据库中创建文档。

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

如果您不能将dbname更改为其他内容,如果您将

更改为 ,问题会更复杂
http://someip:port/dbname?version=1

在vhosts中直接指向update处理程序,那么你不能从Futon UI访问db,因为从Futon UI获取请求会直接指向update处理程序,并且会抛出HTTP方法不匹配错误。

为了克服这个问题,创建一个重写处理程序来指导来自 的请求。
someip:port/dbname?version=1

更新处理程序,请求到达

someip:port/dbname

到show函数,显示从Futon看到的默认视图。

最好的解决方案是,如果你有改变数据库名称的自由,然后将URL重定向到数据库设计文档的更新处理程序的POST。

也许虚拟主机和/或重写文档会有所帮助:

http://docs.couchdb.org/en/latest/config/http.html虚拟主机

最新更新