:::tips 过滤器是Gateway的重要功能,常用于请求鉴权、服务调用时长统计、修改请求或响应header、限流、去除路径等等
    image.png

    Gateway提供了两种类型的过滤器:

    • GatewayFilter:通过配置来使用,处理逻辑是固定的
    • GlobalFilter:通过Java代码来使用, 可以自定义, 那么逻辑需要自己写代码实现 ::: :::tips 过滤器的执行顺序

    • 请求进入网关会碰到二类过滤器:GateWayFilter(当前路由的过滤器、DefaultFilter)、GlobalFilter。请求路由后,会将当前路由过滤器和DefaultFilter、GlobalFilter,合并到一个过滤器链(集合)中,排序后依次执行每个过滤器,类型不一样是通过GatewayFilterAdapter适配器来做到的

    过滤器排序的规则

    • 每一个过滤器都必须指定一个int类型的order值,order值越小优先级就越高,执行顺序越靠前
    • GlobalFilter通过实现Ordered接口,或者添加@Order注解来指定order值,由我们自己指定
    • GatewayFilter(路由过滤器和defaultFilter)的order由Spring指定,默认是按照声明顺序从1递增
    • 当过滤器的order值一样时,会按照下面的顺序执行
      1. GateWayFilter的全局过滤器
      2. GateWayFilter的局部过滤器
      3. GlobalFilter过滤器按照顺序依次执行

    image.png :::