spring cloud gateway 自定义全局过滤器


spring cloud gateway 自定义全局过滤器

***************************

相关接口

GlobalFilter:全局过滤接口

public interface GlobalFilter {
    Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain);
}

Ordered:过滤接口调用顺序,数值小的在前面调用

public interface Ordered {
    int HIGHEST_PRECEDENCE = -2147483648;
    int LOWEST_PRECEDENCE = 2147483647;

    int getOrder();
}

***************************

示例

********************

配置文件

application.yml

spring:
  cloud:
    gateway:
      routes:
        - id: myRoute
          uri: http://www.baidu.com
          predicates:
            - Path=/hello
          filters:
            - StripPrefix=1

********************

过滤器

过滤器1

@Component
public class CustomFilter implements GlobalFilter, Ordered {

    @Override
    public int getOrder() {
        return 0;
    }

    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        System.out.println("hello world");
        return chain.filter(exchange);
    }
}

过滤器2

@Component
public class CustomFilter2 implements GlobalFilter, Ordered {

    @Override
    public int getOrder() {
        return 1;
    }

    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        System.out.println("hello world2");
        return chain.filter(exchange);
    }
}

**********************

测试输出

http//localhost:8080/hello

hello world
hello world2
发布了331 篇原创文章 · 获赞 92 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43931625/article/details/104084619