我将维护一个springcloudgateway项目,而且是一个全新的项目。我要加一个特别的 org.springframework.cloud.gateway.filter.GlobalFilter
它分析请求和响应数据以实现一些附加功能。
然而,我从界面得到的是 org.springframework.http.server.reactive.ServerHttpRequest
以及相应的响应对象,该对象没有 getInputStream
方法类似于servlet的对应方法。
我想要达到的目标大致如下:
public class CustomGlobalFilter implements GlobalFilter {
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
ServerHttpRequest request = exchange.getRequest();
ServerHttpResponse response = exchange.getResponse();
//TODO: modify the two objects or wrap them in wrapper class...
Mono<Void> result = chain.filter(exchange);
byte[] requestData = getRequestData(request);//TODO: get request data from request object
byte[] responseData = getResponseData(response);//TODO: get response data from response object
//TODO: custom logic
return result;
}
}
也许将内容缓存在内存中会破坏这个框架的目的,但是使用servlet api对我来说不是一个选择。
有谁能给我一些关于如何达到这个目的的建议吗?
暂无答案!
目前还没有任何答案,快来回答吧!