2017-07-04 14 views
0

私は桟橋のコンポーネントでラクダの残りのJavaのDSLを使用しています。 キャメルバージョンは2.18.0ラクダの残りdsl - jsonのボディでGETする方法

このルートは、jsonフォーマットのリクエストを消費し、json応答を生成するレストサービスを提供します。 POSTを使用することは問題ありません。

しかし、これらのルートはデータを変更しないので、動詞としてGETを使用することが好ましいでしょう。

GETと一緒にアップストリームのjson本体を受け入れる方法はありますか?

基本消費者に依存していますか?

これを行う例はありますか、それとも私は根本的にそうしようとしていますか?

事前にありがとうヘニング

答えて

0

桟橋成分はドキュメントごとに推奨されていません。 camel-restlet componentを使用してエンドポイントを構築することができます。restletMethodを使用してエンドポイント方法を指定することができます。

+0

こんにちはPanayiotis、申し訳ありませんが私の質問が明快さを欠いていた場合、私はラクダの残りのJava dslの基礎消費者として桟橋を使用しています。私はこれをより明確に編集します。 restletはGETのために入ってくるボディを受け入れるでしょうか? –

+0

さて、私はそれのためのテストをセットアップしようとしましたが、それはボディでGETを送信するためのマッチの努力を必要としました。(HttpURLConnectionはあなたのreqをPOSTとして自動的に変換し、outStreamを設定します。体を受け入れると、私はこの問題に遭遇しました。 GETの本文は読まれていないと言われています。[CAMEL-9611](https://issues.apache.org/jira/browse/CAMEL-9611) –

+0

こんにちはPanayiotis、努力してくれてありがとう。私は答えとしてこれを集める短い答えをします。 –

0

私はこれまでに遭遇したことを集めます。 Panayiotisの回答の助けを借りて、CAMEL-9611は、それが明示的に非アクティブ化されているように見えることに注意し、GET要求で身体を表現する可能性を紛失しています。

HTTP仕様では、GET要求での本体の使用についてはあまり漠然としていますが、その使用法はほとんどの場合フレームワークによってサポートされているに過ぎません。

私は、より複雑なクエリを定義する方がはるかに簡単なので、json本体でGETを使用して複雑なクエリ入力を定義することができることを期待しました。しかし、読んでいる間、私は、このサポートはサポートの欠如のために落胆しているという印象を受けます。

+0

https://tools.ietf.org/html/rfc7231#section-4.3.1 - 「GETリクエストメッセージ内のペイロードにはセマンティクスが定義されていないため、GETリクエストでペイロード本体を送信すると、既存の実装によっては要求。" –