spring-cloud-gateway修改request param与body
前言:最近遇到一个新需求,就是需要给全局的请求做一个参数解密,包括request param与body中的参数。
分解下来可以分为三步:实现全局拦截请求、修改request param、修改request body。
一、Global Filter
在spring-cloud-gateway中我们要实现全局拦截,可以实现GlobalFilter
,通过实现Order
来控制filter的执行顺序,代码如下:
@Component
@Slf4j
public class ModificationGatewayFilter implements GlobalFilter, Ordered {
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
//修改 request param
ServerWebExchange newExchange = modificationRequestParam(exchange);
MediaType mediaType = newExchange.getRequest().getHeaders().getContentType();
//仅解密 json body,如果要修改类型body传参,可以不作限制