4

使用 http 入站网关,我可以使用 SPEL 指定有效负载表达式,该表达式将访问标头、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 构造函数添加一个附加参数,该参数是实际的帖子正文(显然我将更改方法)并将其序列化为适当的类型。

这可能吗?提前致谢。

4

1 回答 1

6

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

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

只是因为HttpEntity有那个 getter!

于 2013-09-19T16:10:30.930 回答