URI uri = exchange.getRequest().getURI();
StringBuilder query = new StringBuilder();
String originalQuery = uri.getRawQuery();
if (StringUtils.hasText(originalQuery)) {
query.append(originalQuery);
if (originalQuery.charAt(originalQuery.length() - 1) != '&') {
query.append('&');
}
}
params.forEach((key,value) ->{
query.append(key);
query.append('=');
query.append(value);
query.append('&');
});
try {
URI newUri = UriComponentsBuilder.fromUri(uri).replaceQuery(query.toString()).build(true).toUri();
ServerHttpRequest request = exchange.getRequest().mutate().uri(newUri).build();
return chain.filter(exchange.mutate().request(request).build());
} catch (RuntimeException var8) {
throw new IllegalStateException("Invalid URI query: \"" + query.toString() + "\"");
}
以上这种写法,参考了自带的 AddRequestParameter 过滤器的写法