Spring Cloud Gateway 过滤器 StripPrefix=1 的作用
Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring WebFlux 和 Project Reactor 等技术构建的 API 网关,用于代替 Netflix Zuul。
StripPrefix 过滤器用于修改请求的路径。当我们在请求URL中添加了某一部分,但是服务并不需要这一部分时,我们可以使用 StripPrefix 过滤器来去掉请求路径中的前缀。
例如,我们有一个请求URL为 http://localhost:8080/part1/part2/service,我们可以通过添加 StripPrefix 过滤器来去掉前缀 part1。
以下是一个 StripPrefix 过滤器的示例代码:
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
return builder.routes()
.route("strip_prefix_route", r -> r.path("/part1/**")
.filters(f -> f.stripPrefix(1))
.uri("http://localhost:8080"))
.build();
}
在这个例子中,我们定义了一个名为 strip\_prefix\_route 的路由,该路由将匹配所有以 /part1 开头的请求。然后我们添加了一个 StripPrefix 过滤器,并将其参数设置为 1,这意味着它将去掉请求路径中的第一部分(即 /part1)。因此,请求 http://localhost:8080/part1/part2/service 将被转发到 http://localhost:8080/part2/service。
注意:StripPrefix 过滤器的参数表示要去掉的前缀数量。例如,如果你有一个请求路径 /part1/part2/part3,你可以通过添加一个 StripPrefix 过滤器并设置参数为 2,来去掉前缀 part1 和 part2,最终请求会被转发到 /part3。
评论已关闭