Spring Gateway: как динамически установить URI и путь на основе заголовков запроса и пути - PullRequest
1 голос
/ 22 января 2020

допустим, у меня есть входящий запрос: host: my-XXX.domain.com и путь /YYY/ZZZ, и я хочу направить этот запрос на uri XXX.YYY.internal.domain.com/ZZZ. Как я могу достичь этого?

Стандартный API, кажется, не позволяет извлекать какие-либо шаблоны

builder.routes()
    .route{ it
            .header(xxx,xxx)
            .path("/*/**")
            .uri("i can't use here anything captured in header or path function")
    }

есть функция, которая дает мне доступ к запросу и позволяет вернуть любой URI

                        .filters{
                            it.changeRequestUri {
                                val service = it.request....
                                Optional.of(URI("http://...."))
                            }
                        }
                        .uri("https://this will be ignored")

, но я не могу указать путь там.

Есть ли какие-либо существующие API-интерфейсы для простого достижения этого или мне нужно написать собственный фильтр? как это сделать правильно?

1 Ответ

0 голосов
/ 28 января 2020

это то, что у меня сработало

.filters{
    it.changeRequestUri {
        val (service, environment, newPath) = computeUrlParts(it)
        Optional.of(URI("http://$environment$service.internal.my-company.com/$newPath"))
    }
}
.uri("http://postman-echo.com") //ignored
...