我从客户端收到一个请求,该请求返回一个具有HttpMethod,要发送的路径和数据的SendRequest-Object。 现在,我想根据获取到API的对象来发送请求。
发送后,我将收到回复。
现在的问题是如何发送有效载荷并接收响应。
@Bean
public IntegrationFlow httpPostSendRawData() {
return IntegrationFlows.from(
Http.inboundGateway("/api/data/send")
.requestMapping(r -> r.methods(HttpMethod.POST))
.statusCodeExpression(dataParser().parseExpression("T(org.springframework.http.HttpStatus).BAD_REQUEST"))
.requestPayloadType(ResolvableType.forClass(DataSend.class))
.crossOrigin(cors -> cors.origin("*"))
.headerMapper(dataHeaderMapper())
)
.channel("http.data.send.channel")
.handle("rawDataEndpoint", "send")
.transform(/* here i have some transformations*/)
.handle(Http.outboundGateway((Message<SendRequest> r)->r.getPayload().getPath())
.httpMethod(/* Here I would like to get the Method of SendRequest*/)
//add payload
.extractPayload(true))
.get();
答案 0 :(得分:1)
不清楚您的SendRequest
是什么,但是method
的想法与您对url
所做的完全相同:
.httpMethodFunction((Message<SendRequest> r)->r.getPayload().getMethod())
尽管,由于您希望对请求正文进行一些提取,因此您需要事先在transform()
中进行提取,并将url
和method
的值移到标题中。
Http.outboundGateway
中没有任何有效负载提取:它以HTTP请求主体的实体形式处理整个请求有效负载。