gateway还有一个就是实现过滤的作用,配置方法参考官网:Spring Cloud Gateway
我这边整了一个自定义过滤
首先在启动类中加入给过滤让他使用上
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
return builder.routes()
.route("demo2", r -> r.path("/demo2/**")
.filters(f ->f.filters(new Changegtefilter()))
.uri("lb://DEMO2"))
.build();
}
我是新建了一个类 Changegtefilter继承了
GatewayFilter, Ordered判断gid=1才让他通过
@Component()
public class Changegtefilter implements GatewayFilter, Ordered{
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
if (exchange.getRequest().getURI().getQuery().equals("gid=1")){
System.out.println(exchange.getRequest().getURI().getQuery());
return chain.filter(exchange);
}else {
return exchange.getResponse().setComplete();
}
}
//设置优先级
@Override
public int getOrder() {
return 0;
}
@Override
public ShortcutType shortcutType() {
return null;
}
@Override
public List<String> shortcutFieldOrder() {
return null;
}
@Override
public String shortcutFieldPrefix() {
return null;
}
}
进行测试当=2时没有返回什么东西
=1时正常返回