44.8. REST producer 绑定
REST 制作者支持使用 JSon 或 XML (如 rest-dsl)的绑定。
例如,要将 jetty 与 json 绑定模式一起使用,您可以在其他配置中配置它:
restConfiguration().component("jetty").host("localhost").port(8080).bindingMode(RestBindingMode.json); from("direct:start") .to("rest:post:user");
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);
UserPojo user = new UserPojo();
user.setId(123);
user.setName("Donald Duck");
template.sendBody("direct:start", user);
在上例中,我们发送 POJO 实例 UserPojo
作为邮件正文。由于我们已在其他配置中打开 JSon 绑定,因此在调用 REST 服务前,POJO 将从 POJO 打包为 JSon。
但是,如果您还要为响应消息(如 REST 服务发回回响应)执行绑定,您需要配置 outType
选项,以指定 POJO 的类名称从 JSon 解放至 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");
restConfiguration().component("jetty").host("localhost").port(8080).bindingMode(RestBindingMode.json);
from("direct:start")
.to("rest:post:user?outType=com.foo.MyResponsePojo");
注意
如果您希望从调用 REST 服务收到的响应消息发生 POJO 绑定,则必须配置 outType
选项。