34 修复body数据过大超过默认256K时,报错(DataBufferLimitException: Exceeded limit on max bytes to buffer), 修改spring.codec.max-in-memory-size也无效的问题
parent
5dd5bfb2c7
commit
fcfd494747
|
@ -37,6 +37,7 @@ import org.springframework.web.server.ServerWebExchange;
|
||||||
import reactor.core.publisher.Flux;
|
import reactor.core.publisher.Flux;
|
||||||
import reactor.core.publisher.Mono;
|
import reactor.core.publisher.Mono;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -57,10 +58,7 @@ import static cn.hutool.core.date.DatePattern.NORM_DATETIME_MS_FORMATTER;
|
||||||
@Component
|
@Component
|
||||||
public class AccessLogFilter implements GlobalFilter, Ordered {
|
public class AccessLogFilter implements GlobalFilter, Ordered {
|
||||||
|
|
||||||
/**
|
@Resource
|
||||||
* 解决spring.codec.max-in-memory-size设置不生效的问题
|
|
||||||
*/
|
|
||||||
@Autowired
|
|
||||||
private CodecConfigurer codecConfigurer;
|
private CodecConfigurer codecConfigurer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -141,6 +139,7 @@ public class AccessLogFilter implements GlobalFilter, Ordered {
|
||||||
*/
|
*/
|
||||||
private Mono<Void> filterWithRequestBody(ServerWebExchange exchange, GatewayFilterChain chain, AccessLog gatewayLog) {
|
private Mono<Void> filterWithRequestBody(ServerWebExchange exchange, GatewayFilterChain chain, AccessLog gatewayLog) {
|
||||||
// 设置 Request Body 读取时,设置到网关日志
|
// 设置 Request Body 读取时,设置到网关日志
|
||||||
|
// 此处 codecConfigurer.getReaders() 的目的,是解决 spring.codec.max-in-memory-size 不生效
|
||||||
ServerRequest serverRequest = ServerRequest.create(exchange, codecConfigurer.getReaders());
|
ServerRequest serverRequest = ServerRequest.create(exchange, codecConfigurer.getReaders());
|
||||||
Mono<String> modifiedBody = serverRequest.bodyToMono(String.class).flatMap(body -> {
|
Mono<String> modifiedBody = serverRequest.bodyToMono(String.class).flatMap(body -> {
|
||||||
gatewayLog.setRequestBody(body);
|
gatewayLog.setRequestBody(body);
|
||||||
|
|
Loading…
Reference in New Issue