在官网看到这样的写法
spring:
cloud:
gateway:
routes:
- id: nameRoot
uri: https://nameservice
predicates:
- Path=/name/**
filters:
- StripPrefix=2
当网关转发请求路径为 /name/blue/red
时,实际上是向nameservice转发的nameservice/red
请求,官网中并没有给出流式api的栗子
可以使用下面的代码来实现
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
return builder.routes()
.route("oauth",
f-> f.path("/oauth/**")
.filters(gatewayFilterSpec -> gatewayFilterSpec.rewritePath("/oauth",""))
.uri("lb://oauth")
).build();
}
但是还是有问题,如果将官网的改成用流式api来写的话,你怎么知道name的后面一定是blue呢就像下面这样
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
return builder.routes()
.route("nameRoot",
f-> f.path("/name/**")
//问题在这里
.filters(gatewayFilterSpec -> gatewayFilterSpec.rewritePath("/name/blue",""))
.uri("lb://nameservice")
).build();
}
希望