260.6. REST プロデューサーバインディング
REST プロデューサーは、JSon または rest-dsl のように XML を使用したバインディングをサポートします。
たとえば、json バインディングモードを有効にして jetty を使用するには、rest 設定で設定できます。
restConfiguration().component("jetty").host("localhost").port(8080).bindingMode(RestBindingMode.json);
from("direct:start")
.to("rest:post:user");
次に、REST プロデューサーを使用して 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 サービスが応答として返されるものなど)、JSon から POJO にアンマーシャリングする POJO のクラス名を指定するよう outType オプションを設定する必要があります。
たとえば、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 オプションを設定する必要があります。