41.8. REST プロデューサーバインディング
REST プロデューサーは、rest-dsl のように JSon または 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 から 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 オプションを設定する必要があります。