SpringBoot http post请求数据大小设置操作

网友投稿 1538 2023-04-08

SpringBoot http post请求数据大小设置操作

SpringBoot http post请求数据大小设置操作

背景:

使用http post请求方式的接口,使用request.getParameter("XXX");的方法获取参数的值,当数据量超过几百k的时候,接口接收不到数据或者接收为null。

@RequestMapping(value = "/rcv",method = RequestMethod.POST)

public ResInfo pullApi(HttpServletRequest request) {

String channel = request.getParameter("channel");

}

在application.properties里添加:

spring.http.multipart.max-file-size=-1

spring.http.multipart.max-request-size=-1

默认值:

private String maxFileSize = "1MB"; private String maxRequestSize = "10MB";

这个设置是大小不限制,主要是这个设置。

server.tomcat.max-http-post-size=-1

补充知识:spring boot post请求数据太大接收不到参数(参数为空)报400错误。

spirng boot发送的请求,有的参数数据量大,有的参数数据量小。数据量大的发送不到后端,报400错误。

首先说以jetty为内嵌服务器的时候:

1、修改yml文件或者properties文件,

server.max-http-post-size=200*1024*1024,设置为200m,总够了吧,可以按照量设置小一点。

Spring Boot 1.4.0.M2之后就可以使用这个属性。适合于不修改代码,快速重新部署。

2、在java代码里面实现:

@Bean

public EmbeddedServletContainerCustomizer jettyCustomizer() {

return new EmbeddedServletContainerCustomizer() {

@Override

public void customize(ConfigurableEmbeddedServletContainer container) {

if (containeTrOsAJr instanceof JettyEmbeddedServletContainerFactory) {

((JettyEmbeddedServletContainerFactory) container)

.addServerCustomizers(new JettyServerCustomizer() {

@Override

public void customize(Server server) {

setHandlerMaxHttpPostSize(200 * 1024 * 1024, server.getHandlers());

}

private void setHandlerMaxHttpPostSTrOsAJize(int maxHttpPostSize,

Handler... handlers) {

for (Handler handler : handlers) {

if (handler instanceof ContextHandler) {

((ContextHandler) handler)

.setMaxFormContentSize(maxHttpPostSize);

}

else if (handler instanceof HandlerWrapper) {

setHandlerMaxHttpPostSize(maxHttpPostSize,

TrOsAJ ((HandlerWrapper) handler).getHandler());

}

else if (handler instanceof HandlerCollection) {

setHandlerMaxHttpPostSize(maxHttpPostSize,

((HandlerCollection) handler).getHandlers());

}

}

}

});

}

}

};

}

Spring Boot 1.3.x之后可以使用这个功能。

3、设置接收数据在 request body里面。上面两种情况适合于数据不放在request body里面的。

tomcat应该是类似的。

参考https://stackoverflow.com/questions/36872540/spring-boot-rest-service-form-too-large

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SpringMvc @Valid如何抛出拦截异常
下一篇:Redis打开rdb文件常用方法详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~