原理
该方式是在多个filter之间传递参数的一个解决方案,主要是通过ServerWebExchange在多个filter之间进行参数的传递。
示例
第一个filter中设置参数
//第一个filter
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
......
Map<String, String> map = CollUtil.newHashMap();
map.put(“test”, "test");
ServerWebExchangeUtils.putUriTemplateVariables(exchange, map);
......
return chain.filter(exchange);
}
第二个filter读取参数
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
......
Map<String, String> map = ServerWebExchangeUtils.getUriTemplateVariables(exchange);
String str = map.get("test");
......
return chain.filter(exchange);
}
结语
以上是简单的spring gateway多个filter间传递参数的方法,本文仅作为记录分享,并非提供最佳解决方案。