Spring интеграции Java DSL: как динамически выбирать HttpMethod с помощью метода Http.outboundGateway - PullRequest
0 голосов
/ 15 января 2019

У меня есть разные методы потока для 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");
    }

Они содержат почти один и тот же код четыре раза. Можно ли иметь один метод, который динамически обрабатывает эти четыре случая?

1 Ответ

0 голосов
/ 15 января 2019

Добавьте метод в заголовок и ...

.httpMethodFunction(m -> m.getHeaders().get("httpMethod")

(или получить его из некоторого выражения SpEL с помощью .httpMethodExpression(expression)).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...