//package cn.mb.cloud.gateway.filter; // //import com.alibaba.fastjson.JSON; //import lombok.extern.slf4j.Slf4j; //import org.reactivestreams.Publisher; //import org.springframework.cloud.gateway.filter.GatewayFilterChain; //import org.springframework.cloud.gateway.filter.GlobalFilter; //import org.springframework.core.Ordered; //import org.springframework.core.io.buffer.DataBuffer; //import org.springframework.core.io.buffer.DataBufferFactory; //import org.springframework.core.io.buffer.DataBufferUtils; //import org.springframework.http.HttpStatus; //import org.springframework.http.server.reactive.ServerHttpRequest; //import org.springframework.http.server.reactive.ServerHttpResponse; //import org.springframework.http.server.reactive.ServerHttpResponseDecorator; //import org.springframework.stereotype.Component; //import org.springframework.web.server.ServerWebExchange; //import reactor.core.publisher.Flux; //import reactor.core.publisher.Mono; // //import java.nio.charset.StandardCharsets; //import java.util.ArrayList; //import java.util.List; // ///** // * 日志拦截器 // */ //@Slf4j //@Component //public class ResponseParamFilter implements GlobalFilter, Ordered { // // @Override // public int getOrder() { // return -1; // } // // @Override // public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) { // try { // ServerHttpRequest request = exchange.getRequest(); // String uri = request.getURI().getRawPath(); // ServerHttpResponse originalResponse = exchange.getResponse(); // DataBufferFactory bufferFactory = originalResponse.bufferFactory(); // HttpStatus statusCode = originalResponse.getStatusCode(); // if(statusCode == HttpStatus.OK){ // ServerHttpResponseDecorator decoratedResponse = new ServerHttpResponseDecorator(originalResponse) { // @Override // public Mono writeWith(Publisher body) { // if (body instanceof Flux) { // Flux fluxBody = Flux.from(body); // return super.writeWith(fluxBody.map(dataBuffer -> { // byte[] content = new byte[dataBuffer.readableByteCount()]; // dataBuffer.read(content); // DataBufferUtils.release(dataBuffer);//释放掉内存 Release memory // // 构建日志 build Journal // StringBuffer sb = new StringBuffer(); // sb.append(" 响应操作 -> " + uri + " || 响应参数-> {} \n"); // // List rspArgs = new ArrayList<>(); // rspArgs.add(originalResponse.getStatusCode()); // String data = new String(content, StandardCharsets.UTF_8);//data // sb.append(data); // log.info(sb.toString(), rspArgs.toArray()); // return bufferFactory.wrap(content); // })); // } else { // log.error("响应操作 -> " + uri + " || 响应参数-> {} \n", getStatusCode()); // } // return super.writeWith(body); // } // }; // return chain.filter(exchange.mutate().response(decoratedResponse).build()); // } // return chain.filter(exchange);//降级处理返回数据 Downgrade processing returns data // }catch (Exception e){ // log.error("gateway log exception.\n" + e); // return chain.filter(exchange); // } // } //}