fix limit on max bytes to buffer : 262144

This commit is contained in:
tanghc
2021-04-16 17:49:19 +08:00
parent ede2e37d3c
commit 3421daa1e3
2 changed files with 17 additions and 1 deletions

View File

@@ -18,6 +18,7 @@ import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.http.codec.HttpMessageReader;
import org.springframework.http.codec.ServerCodecConfigurer;
import org.springframework.http.converter.FormHttpMessageConverter;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.util.MultiValueMap;
@@ -78,6 +79,17 @@ public class ServerWebExchangeUtil {
return ServerRequest.create(exchange, messageReaders);
}
/**
* 构建一个接受请求体的request
*
* @param exchange exchange
* @param codecConfigurer codecConfigurer
* @return 返回ServerRequest
*/
public static ServerRequest createReadBodyRequest(ServerWebExchange exchange, ServerCodecConfigurer codecConfigurer) {
return ServerRequest.create(exchange, codecConfigurer.getReaders());
}
public static ApiParam getApiParamForRestful(ServerWebExchange exchange, String path) {
int index = path.indexOf(REST_PATH);
// 取"/rest"的后面部分

View File

@@ -20,6 +20,7 @@ import org.springframework.core.annotation.Order;
import org.springframework.core.io.buffer.DataBuffer;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.codec.ServerCodecConfigurer;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.http.server.reactive.ServerHttpRequestDecorator;
import org.springframework.web.reactive.function.BodyInserter;
@@ -61,6 +62,9 @@ public class IndexFilter implements WebFilter {
@Autowired
private GatewayForwardChooser gatewayForwardChooser;
@Autowired
private ServerCodecConfigurer codecConfigurer;
@Override
public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
ServerHttpRequest request = exchange.getRequest();
@@ -84,7 +88,7 @@ public class IndexFilter implements WebFilter {
}
if (Objects.equals(path, indexPath)) {
if (request.getMethod() == HttpMethod.POST) {
ServerRequest serverRequest = ServerWebExchangeUtil.createReadBodyRequest(exchange);
ServerRequest serverRequest = ServerWebExchangeUtil.createReadBodyRequest(exchange, codecConfigurer);
// 读取请求体中的内容
Mono<?> modifiedBody = serverRequest.bodyToMono(byte[].class)
.flatMap(data -> {