如何从我的 IntegrationFlow 发送 HTTP 请求?
How to send HTTP-Request from my IntegrationFlow?
我收到来自客户端的请求,其中 returns 一个具有 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();
不清楚您的 SendRequest
是什么,但是 method
的想法与您对 url
所做的完全相同:
.httpMethodFunction((Message<SendRequest> r)->r.getPayload().getMethod())
尽管如此,由于您希望对请求 body 进行一些提取,因此您需要提前在 transform()
中执行此操作并移动 url
和 [=12 的值=] 到 headers。
Http.outboundGateway
中没有任何有效载荷提取:它将整个请求有效载荷作为 HTTP 请求的实体处理 body。
我收到来自客户端的请求,其中 returns 一个具有 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();
不清楚您的 SendRequest
是什么,但是 method
的想法与您对 url
所做的完全相同:
.httpMethodFunction((Message<SendRequest> r)->r.getPayload().getMethod())
尽管如此,由于您希望对请求 body 进行一些提取,因此您需要提前在 transform()
中执行此操作并移动 url
和 [=12 的值=] 到 headers。
Http.outboundGateway
中没有任何有效载荷提取:它将整个请求有效载荷作为 HTTP 请求的实体处理 body。