276.6. Rest プロデューサーバーインディング
REST producer は、rest-dsl と同様に JSON または XML を使用したバインディングをサポートします。
たとえば、json バインディングモードをオンにして jetty を使用するには、残りの設定でこれを構成できます。
restConfiguration().component("jetty").host("localhost").port(8080).bindingMode(RestBindingMode.json); from("direct:start") .to("rest:post:user");
次に、rest producer を使用して REST サービスを呼び出すと、REST サービスを呼び出す前に、すべての POJO が json に自動的にバインドされます。
UserPojo user = new UserPojo(); user.setId(123); user.setName("Donald Duck"); template.sendBody("direct:start", user);
上記の例では、POJO インスタンス UserPojo
をメッセージ本文として送信します。また、REST 設定で JSON バインディングをオンにしたため、REST サービスを呼び出す前に POJO が POJO から JSON にマーシャリングされます。
ただし、応答メッセージ (たとえば、REST サービスが応答として送り返すもの) のバインドも実行する場合は、outType
オプションを設定して、JSon から POJO に非整列化する POJO のクラス名を指定する必要があります。
たとえば、REST サービスが com.foo.MyResponsePojo
にバインドする JSON ペイロードを返す場合、次のように設定できます。
restConfiguration().component("jetty").host("localhost").port(8080).bindingMode(RestBindingMode.json); from("direct:start") .to("rest:post:user?outType=com.foo.MyResponsePojo");
REST サービスの呼び出しから受信した応答メッセージに対して POJO バインディングを行う場合は、outType
オプションを設定する必要があります。