Evg*_*rov 5 java spring gateway
如何在 Spring Cloud Gateway 2.0 中转发路径变量?
如果我们有一个微服务,它有 2 个端点:/users并且/users/{id}在端口 8080 上运行,如何将请求转发到具有 id 路径变量的端点?
以下网关配置成功转发到/users端点,但第二条路由将请求转发到/users真实服务的同一端点。
@Bean
public RouteLocator routes(RouteLocatorBuilder builder) {
return builder.routes()
.route("users", t -> t.path("/users").uri("http://localhost:8080/users"))
.route("userById", t -> t.path("/users/**").uri("http://localhost:8080/users/"))
.build();
}
Run Code Online (Sandbox Code Playgroud)
我正在使用spring-cloud-starter-gatewayspring cloudFinchley.BUILD-SNAPSHOT
甲rewritePath滤波器必须使用:
@Bean
public RouteLocator routes(RouteLocatorBuilder builder) {
return builder.routes()
.route("users", t -> t.path("/users")
.uri("http://localhost:8080/users"))
.route("userById", t -> t.path("/users/**")
.filters(rw -> rw.rewritePath("/users/(?<segment>.*)", "/users/${segment}"))
.uri("http://localhost:8080/users/"))
.build();
}
Run Code Online (Sandbox Code Playgroud)
YAML 版本在文档中指定:
spring:
cloud:
gateway:
routes:
- id: rewritepath_route
uri: http://example.org
predicates:
- Path=/foo/**
filters:
- RewritePath=/foo/(?<segment>.*), /$\{segment}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10373 次 |
| 最近记录: |