如何在Spring cloud gateway全局filter中获取本次请求命中的路由id
首先开启gateway debug日志,可以看到debug日志中是可以打印请求所命中的路由id的,Route matched: hello-route然后我在想怎么在程序中获取到这个id呢?因为如果在程序中可以获取到这个id,我就可以按统计每个路由所被访问的次数。网上找了一些博客,都没有提到这个问题,所以只能自己想了。首先我从打印日志的类开始搜,打开源码。可以看到这里对应的r就是我...
·
首先开启gateway debug日志,可以看到
debug日志中是可以打印请求所命中的路由id的,Route matched: hello-route
然后我在想怎么在程序中获取到这个id呢?因为如果在程序中可以获取到这个id,我就可以按统计每个路由所被访问的次数。网上找了一些博客,都没有提到这个问题,所以只能自己想了。
首先我从打印日志的类开始搜,打开源码。
可以看到这里对应的r就是我们要获取的路由。因为从打印的日志中可以看出
Route{id='hello-route', uri=http://127.0.0.1:8763, order=0, predicate=org.springframework........
我们只要获取到这个Route对象就可以了。那么源码中这个对象放哪儿了呢?
所以我们只需要在exchange中根据
ServerWebExchangeUtils.GATEWAY_ROUTE_ATTR
这个key从Attributes获取就可以了。
下面编写一个Global Filter试试吧。
成功!
更多推荐
已为社区贡献1条内容
所有评论(0)