:::tips
过滤器是Gateway的重要功能,常用于请求鉴权、服务调用时长统计、修改请求或响应header、限流、去除路径等等
Gateway提供了两种类型的过滤器:
- GatewayFilter:通过配置来使用,处理逻辑是固定的
GlobalFilter:通过Java代码来使用, 可以自定义, 那么逻辑需要自己写代码实现 ::: :::tips 过滤器的执行顺序
请求进入网关会碰到二类过滤器:GateWayFilter(当前路由的过滤器、DefaultFilter)、GlobalFilter。请求路由后,会将当前路由过滤器和DefaultFilter、GlobalFilter,合并到一个过滤器链(集合)中,排序后依次执行每个过滤器,类型不一样是通过GatewayFilterAdapter适配器来做到的
过滤器排序的规则
- 每一个过滤器都必须指定一个int类型的order值,order值越小优先级就越高,执行顺序越靠前
- GlobalFilter通过实现Ordered接口,或者添加@Order注解来指定order值,由我们自己指定
- GatewayFilter(路由过滤器和defaultFilter)的order由Spring指定,默认是按照声明顺序从1递增
- 当过滤器的order值一样时,会按照下面的顺序执行
- GateWayFilter的全局过滤器
- GateWayFilter的局部过滤器
- GlobalFilter过滤器按照顺序依次执行
:::