Spring Cloud Gateway: отобразить путь / a к пути / b - PullRequest
1 голос
/ 14 февраля 2020

Я запускаю новый проект Spring Boot с использованием Spring Cloud Gateway: мне нужно реализовать прокси-приложение для существующего REST API.

Прокси-приложение будет реализовывать новые функции (конечные точки) при пересылке на «старое» приложение: все запросы отправляются к существующим конечным точкам.

(Затем я постепенно перенесу и существующие конечные точки в новое приложение, следуя подходу, аналогичному Pattern Strangler )

Но мне также нужно переписать путь нескольких существующих конечных точек, что-то вроде:

return routeLocatorBuilder.routes()
    .route(p -> p
        .path("/new-endopint")
        .map("/old-endpoint") // <= is there something like 'map' method?
        .uri("http://old-app-url")).build();

Возможно ли это? Есть ли способ сопоставить конечную точку другой?

1 Ответ

1 голос
/ 14 февраля 2020

В облачном шлюзе есть org.springframework.cloud.gateway.route.RouteDefinition, который может сопоставить входящий запрос с восходящим потоком, применяя FilterDefinition и PredicateDefinition.

Вы можете увидеть, как это работает, посмотрев на org.springframework.cloud.gateway.discovery.DiscoveryClientRouteDefinitionLocator* ..) выглядит многообещающе.

return routeLocatorBuilder.routes()
    .routes()
    .route(
        p ->
            p.path("/new-endpoint/**")
                .filters(
                    spec ->
                        spec.rewritePath(
                            "/new-endpoint/(?<segment>.*)", "/old-endpoint/${segment}"))
                .uri("http://old-app-url"))
    .build();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...