//@Component
//自定义过滤器命名规则 :XXXXGatewayFilterFactory extends AbstractGatewayFilterFactory<创建的静态内部类>
public class MyParamGatewayFilterFactory extends AbstractGatewayFilterFactory<MyParamGatewayFilterFactory.Config> {
static final String PARAM_NAME="param";
//无参构造方法中 super(Config.class);
public MyParamGatewayFilterFactory(){
super(Config.class);
}
//重写shortcutFieldOrder()方法
@Override
public List<String> shortcutFieldOrder() {
return Arrays.asList(PARAM_NAME);
}
@Override
//编写过滤逻辑 public GatewayFilter apply(Config config)
public GatewayFilter apply(Config config) {
return (exchange, chain) -> {
ServerHttpRequest request = exchange.getRequest();
if(request.getQueryParams().containsKey(config.param)){
request.getQueryParams().get(config.param).forEach(value-> System.out.printf("局部沟路%s=%s",config.param,value));
}
return chain.filter(exchange);
};
}
// 创建一个静态内部类Config ,里面的属性为配置文件中配置的参数 - 过滤器名称=参数1,参数2…
public static class Config{
private String param;
public String getParam() {
return param;
}
public void setParam(String param) {
this.param = param;
}
}
}
springcloud自定义局部过滤器
最新推荐文章于 2024-05-17 11:36:20 发布