Spring 集成 Java DSL:如何使用 Http.outboundGateway 方法动态选择 HttpMethod
Spring integration Java DSL: How to choose the HttpMethod dynamically with the Http.outboundGateway method
POST
、PUT
、PATCH
、DELETE
我有不同的流程方法,像这样
private IntegrationFlow myChannelPost() {
return f -> f
.handle(Http.outboundGateway("url")
.uriVariable("url", m -> m.getHeaders().get("url"))
.httpMethod(HttpMethod.POST).mappedRequestHeaders("*")
.headerMapper(myHeaderMapper()).expectedResponseType(String.class))
.route("nextChannel.input");
}
private IntegrationFlow myChannelPut() {
return f -> f
.handle(Http.outboundGateway("url")
.uriVariable("url", m -> m.getHeaders().get("url"))
.httpMethod(HttpMethod.PUT).mappedRequestHeaders("*")
.headerMapper(myHeaderMapper()).expectedResponseType(String.class))
.route("nextChannel.input");
}
private IntegrationFlow myChannelPatch() {
return f -> f
.handle(Http.outboundGateway("url")
.uriVariable("url", m -> m.getHeaders().get("url"))
.httpMethod(HttpMethod.PATCH).mappedRequestHeaders("*")
.headerMapper(myHeaderMapper()).expectedResponseType(String.class))
.route("nextChannel.input");
}
private IntegrationFlow myChannelDelete() {
return f -> f
.handle(Http.outboundGateway("url")
.uriVariable("url", m -> m.getHeaders().get("url"))
.httpMethod(HttpMethod.DELETE).mappedRequestHeaders("*")
.headerMapper(myHeaderMapper()).expectedResponseType(String.class))
.route("nextChannel.input");
}
它们四次包含几乎相同的代码。是否可以使用一种方法动态处理这四种情况?
将方法添加到 header 和...
.httpMethodFunction(m -> m.getHeaders().get("httpMethod")
(或使用 .httpMethodExpression(expression)
从某些 SpEL 表达式派生)。
POST
、PUT
、PATCH
、DELETE
我有不同的流程方法,像这样
private IntegrationFlow myChannelPost() {
return f -> f
.handle(Http.outboundGateway("url")
.uriVariable("url", m -> m.getHeaders().get("url"))
.httpMethod(HttpMethod.POST).mappedRequestHeaders("*")
.headerMapper(myHeaderMapper()).expectedResponseType(String.class))
.route("nextChannel.input");
}
private IntegrationFlow myChannelPut() {
return f -> f
.handle(Http.outboundGateway("url")
.uriVariable("url", m -> m.getHeaders().get("url"))
.httpMethod(HttpMethod.PUT).mappedRequestHeaders("*")
.headerMapper(myHeaderMapper()).expectedResponseType(String.class))
.route("nextChannel.input");
}
private IntegrationFlow myChannelPatch() {
return f -> f
.handle(Http.outboundGateway("url")
.uriVariable("url", m -> m.getHeaders().get("url"))
.httpMethod(HttpMethod.PATCH).mappedRequestHeaders("*")
.headerMapper(myHeaderMapper()).expectedResponseType(String.class))
.route("nextChannel.input");
}
private IntegrationFlow myChannelDelete() {
return f -> f
.handle(Http.outboundGateway("url")
.uriVariable("url", m -> m.getHeaders().get("url"))
.httpMethod(HttpMethod.DELETE).mappedRequestHeaders("*")
.headerMapper(myHeaderMapper()).expectedResponseType(String.class))
.route("nextChannel.input");
}
它们四次包含几乎相同的代码。是否可以使用一种方法动态处理这四种情况?
将方法添加到 header 和...
.httpMethodFunction(m -> m.getHeaders().get("httpMethod")
(或使用 .httpMethodExpression(expression)
从某些 SpEL 表达式派生)。