Spring Integration Flow中如何从Payload取值设置REST查询参数
动态从Payload设置REST请求查询参数
没问题,要实现从消息Payload里提取orderId作为URL查询参数,你只需要把原来的固定URI构建逻辑改成动态的lambda表达式即可——这样就能拿到当前的消息对象,进而访问Payload里的属性。
修改后的代码如下:
.handle(Http.outboundGateway(requestMessage -> UriComponentsBuilder.fromHttpUrl("http://localhost:8080") .path("/search") .queryParam("order", requestMessage.getPayload().getOrderId()) .toUriString()) .httpMethod(HttpMethod.GET) .expectedResponseType(Order.class))
几点关键说明:
- 替换了原来的固定URI字符串,改用
Function<Message<?>, String>类型的lambda参数,这样就能获取到当前处理的requestMessage。 - 通过
requestMessage.getPayload()拿到消息体,然后调用Payload对象对应的getOrderId()方法(这里假设你的Payload类有这个getter方法,如果是简单类型比如Long/String,直接用requestMessage.getPayload()即可)。 - 如果后续需要从Header取值,只需要换成
requestMessage.getHeaders().get("你的HeaderKey")就行,同样灵活。
内容的提问来源于stack exchange,提问作者nagendra
相关产品推荐
相关产品推荐

