Моя конфигурация RouteLocator:
Код: Выделить всё
@Bean
public RouteLocator myRouteLocator(final RouteLocatorBuilder builder) {
return builder.routes()
.route(route -> route.path("/**").uri("http://www.example.com/foobar"))
.build();
}
Когда я вызываю службу с помощью http://localhost:8080/myApiCall, облачный шлюз перенаправляет вызов на http://www.example.com/myApiCall
Когда я вызываю службу с помощью http://localhost:8080/myApiCall, облачный шлюз перенаправляет вызов на http://www.example.com/myApiCall
Когда я вызываю службу с помощью http://localhost:8080/myApiCall, облачный шлюз перенаправляет вызов на http://www.example.com/myApiCall
code> вместо http://www.example.com/foobar/myApiCall.
Если я вызываю свою службу как http://localhost:8080/foobar/myApiCall , результирующий вызов будет http://www.example.com/foobar/myApiCall, поэтому в этом случае он работает правильно.
На основе некоторой отладки , мой окончательный URL-адрес создается здесь:
https://github.com/spring-cloud/spring- ... main/java/ org/springframework/cloud/gateway/filter/RouteToRequestUrlFilter.java#L88
Если используется только хост, путь в конфигурации опускается.
Мои используемые версии:spring-cloud-gateway: v3.1.3
spring-core: v5.3.20
Я подумал о том, чтобы просто использовать фильтр перезаписи пути, чтобы всегда добавлять /foobar/ часть – но нет ли лучшего способа?
Подробнее здесь: https://stackoverflow.com/questions/742 ... -with-path
Мобильная версия