0

リクエストとしてカウチ db に送信されるヘッダーを再生するにはどうすればよいですか。キャッチは、表示機能に関係なく、データベースのすべてのドキュメントに対して実行したいということです。

したがって、次のようなドキュメントを作成するために、couch db にリクエストを送信します。

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

ここで、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 で簡単に実行できることはわかっていますが、次のような show 関数の URL にポスト リクエストを送信する必要があります。

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

http://someip:port/db/しかし、私はこれを望んでいません。投稿してカスタム応答ヘッダーを取り戻すことができるかどうかを知りたいですか?

または、リクエストを受け取ったときにアドレスをフロントエンドにしhttp://someip:port/dbて転送 する方法はありますか? http://someip:port/db/_design/mydesigndoc/_show/myshowfunctionこれは可能だと思いますが、わかりませんでした。

どんな助けでも大歓迎です。ありがとう

4

2 に答える 2

1

最終的に解決策を思いつきました。これは私のユースケースに適しています。応答で Couch によって生成されたヘッダーは失われますが、私の場合はそれで問題ありません。

更新ハンドラー、URL の書き換え、関数の表示、仮想ホストの組み合わせが役に立ちました。

問題文で述べたように、ヒットしたい URL は

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

これを変更する自由があれば、より少ない労力でこの問題を解決できたでしょう。ただし、これは、couch DB でドキュメントを作成するための POST 要求でヒットする URL です。

解決策は 2 つあります。1 つは別のデータベース名を作成し、それが可能な場合は、この URL をリライトで更新ハンドラ URL にリダイレクトするか、vhosts を直接使用します。

dbname を別のものに変更できない場合、問題はさらに複雑になります。

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

vhosts で更新ハンドラーに指示すると、Futon UI からの get 要求が更新ハンドラーに指示され、HTTP メソッドの不一致エラーがスローされるため、Futon UI からデータベースにアクセスできません。

これを克服するには、からのリクエストを転送するための書き換えハンドラを作成します。

someip:port/dbname?version=1

ハンドラーを更新し、リクエストが来る

someip:port/dbname

これは、Futon から見たデフォルト ビューを表示します。

最善の解決策は、DB 名を自由に変更できる場合は、URL を POST の DB 設計ドキュメントの更新ハンドラにリダイレクトすることです。

于 2014-05-09T06:46:09.910 に答える