You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot Webflux中Filter组件通过ServerWebExchange获取原始路由路径

在Spring WebFlux Filter中获取路由路径模式

针对你用RouterFunction定义的带路径变量的路由(如hello/{test}),可以通过以下方式在Filter中借助ServerWebExchange获取原始路径模式:

核心原理

Spring WebFlux在路由匹配成功后,会将路由相关信息存入ServerWebExchange的属性中,属性键为RouterFunctions.ROUTE_ATTRIBUTE,对应的属性值是RouterFunction.Route对象,从中可以提取出原始的路径模式。

代码实现示例

@Component
public class RoutePatternFilter implements GlobalFilter {
    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        // 从ServerWebExchange中获取路由属性
        Object routeAttr = exchange.getAttribute(RouterFunctions.ROUTE_ATTRIBUTE);
        
        if (routeAttr instanceof RouterFunction.Route route) {
            RequestPredicate predicate = route.predicate();
            // 判断是否为路径匹配断言(对应你定义的GET("hello/{test}")中的路径规则)
            if (predicate instanceof PathPredicate pathPredicate) {
                // 获取原始路径模式
                String pathPattern = pathPredicate.getPattern();
                // 此处可根据业务需求使用pathPattern,比如打印日志
                System.out.println("匹配的路由路径模式:" + pathPattern);
            }
        }
        
        return chain.filter(exchange);
    }
}

注意事项

  • 该属性仅在请求成功匹配到路由时存在,未匹配到任何路由时routeAttr会为null,需做非空判断。
  • 如果路由使用了组合断言(比如同时匹配请求方法和路径),需要根据实际断言类型做相应的类型转换,上述示例针对的是最常见的路径断言场景。

内容的提问来源于stack exchange,提问作者tony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 08:10:25