78.6. 消耗 REST 请求 - Simple Binding Style
可从 Camel 2.11 开始
默认
绑定样式不是低级,需要用户手动处理进入该路由的 MessageContentsList
对象。因此,它将路由逻辑与 JAX-RS 操作的方法签名和参数索引紧密耦合。某种程度上,很困难且容易出错。
相反,SimpleConsumer
绑定方式执行以下映射,以便可以在 Camel 消息内 使请求数据更易于访问 :
- JAX-RS 参数(@HeaderParam、@QueryParam 等)作为环境变量注入。标头名称与注解的值匹配。
-
请求实体(POJO 或其他类型)成为 IN 消息正文。如果无法在 JAX-RS 方法签名中识别单个实体,它将回退到原始消息
ContentsList
。 -
二进制
@Multipart
body 部分成为 IN 消息附加,支持DataHandler
、InputStream
、DataSource
和 CXF 的Attachment
类。 -
非二进制
@Multipart
正文部分被映射为 IN 消息标头。标头名称与 Body Part name 匹配。
另外,以下规则适用于 Response 映射 :
-
如果消息正文类型与
javax.ws.rs.core.
(用户构建的响应)不同,则创建一个新响应,并且消息正文设置为实体(因此,这是不为空)。响应状态代码从Response
Exchange.HTTP_RESPONSE_CODE
标头中获取,如果不存在,则默认为 200 OK。 -
如果消息正文类型等于
javax.ws.rs.core.Response
,这表示用户已构建了一个自定义响应,因此会遵守最后的响应。 -
在所有情况下,自定义或默认
HeaderFilterStrategy
允许的 Camel 标头都添加到 HTTP 响应中。
78.6.1. 启用 Simple Binding Style
通过将消费者端点中的 bindingStyle
参数设置为 SimpleConsumer
来激活此绑定风格:
from("cxfrs:bean:rsServer?bindingStyle=SimpleConsumer") .to("log:TEST?showAll=true");