RewritePath Filter

RewritePath 过滤器采用路径 regexp 参数和一个 replacement 参数。这使用 Java 正则表达式以灵活的方式重写请求路径。以下列表配置了 RewritePath 过滤器:

application.yml
spring:
  cloud:
    gateway:
      mvc:
        routes:
        - id: rewritepath_route
          uri: https://example.org
          predicates:
          - Path=/red/**
          filters:
          - RewritePath=/red/?(?<segment>.*), /$\{segment}
GatewaySampleApplication.java
import static org.springframework.cloud.gateway.server.mvc.filter.BeforeFilterFunctions.rewritePath;
import static org.springframework.cloud.gateway.server.mvc.handler.GatewayRouterFunctions.route;
import static org.springframework.cloud.gateway.server.mvc.handler.HandlerFunctions.http;

@Configuration
class RouteConfiguration {

    @Bean
    public RouterFunction<ServerResponse> gatewayRouterFunctionsRewritePath() {
		return route("rewritepath_route")
				.GET("/red/**", http("https://example.org"))
					.before(rewritePath("/red/(?<segment>.*)", "/${segment}"))
					.build();
    }
}

对于请求路径 /red/blue,这在进行下游请求之前将路径设为 /blue。请注意,在 application.yml 中,由于 YAML 规范,$ 应该替换为 $\