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 消息附加,支持 DataHandlerInputStreamDataSource 和 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");