java - Spring Integration 在有效负载表达式中组合路径变量和发布主体

标签 java spring spring-integration spring-el

使用 http 入站网关,我能够使用 SPEL 指定有效载荷表达式,它将访问 header 、requestParams 和 pathVariables。我如何还包含 POST 中的正文?我目前拥有的一个例子是

<int-http:inbound-gateway path="/document/{product}/{id}/blah"
                          supported-methods="GET"
                          request-channel="documentService.blah"
                          reply-channel="httpReplyChannel"
                          message-converters="jsonMessageConverter"
                          header-mapper="defaultHttpHeaderMapper"
                          payload-expression="new RequestDTO(
                                                 #pathVariables.product,
                                                 #pathVariables.id,
                                                 #requestParams['optionalParam'],
                                                 headers.get('headerKey')) />

这很好用,但是我想向 RequestDTO 构造函数添加一个额外的参数,它是实际的帖子正文(显然我会更改方法)并将其序列化为适当的类型。

这可能吗?提前致谢。

最佳答案

是的,这是可能的。 payload-expression 使用 EvaluationContextHttpEntity 作为 rootObject#requestParams#pathVariables 变量。 所以,如果你把它改成 POST 你可以得到一个 body !:

 payload-expression="new RequestDTO(
                         #pathVariables.product,
                         #pathVariables.id,
                         #requestParams['optionalParam'],
                         headers.get('headerKey'),
                         body)" 

只是因为 HttpEntity 有那个 getter!

关于java - Spring Integration 在有效负载表达式中组合路径变量和发布主体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18898816/

相关文章:

java - 使用 Aspectj 时可以在 args 中使用我自己的对象吗?

spring-integration - Spring 集成网关 "Dispatcher has no subscribers"

Spring Integration - 并发服务激活器

java - 在 Spring 启动项目中是否必须配置 DataSource?

java - 来自授权码交换的 invalid_grant 响应

java - 如何从代码中获取正在运行的 OSGi 容器信息(名称、版本等)?

java - 提供日志记录(调试)上下文

android - 如何使用 Spring Boot Server 无限期地保持 Android 应用程序登录?

java - bean实例化失败;嵌套异常是 org.springframework.beans.BeanInstantiationException : Could not instantiate bean class

java - Spring Integration 流程失去订阅者