*/
@Component
public class RequestFilter implements GlobalFilter, Ordered {
@Override
public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) {
return DataBufferUtils.join(exchange.getRequest().getBody()).map(dataBuffer -> {
byte[] bytes = new byte[dataBuffer.readableByteCount()];
dataBuffer.read(bytes);
DataBufferUtils.release(dataBuffer);
return bytes;
}).defaultIfEmpty(new byte[0])
.doOnNext(bytes -> {
// 将请求体存入Attributes
exchange.getAttributes().put(Constant.REQUEST_BODY_CACHE, bytes);
})
.then(chain.filter(exchange));
}
@Override
public int getOrder() {
return -3;
}
}
2.响应过滤器,解析响应消息
import com.bzcst.bop.gateway.common.Constant;
import com.google.common.base.Charsets;
import lombok.extern.slf4j.Slf