SpringBoot http post請求數(shù)據(jù)大小設(shè)置操作
背景:
使用http post請求方式的接口,使用request.getParameter("XXX");的方法獲取參數(shù)的值,當(dāng)數(shù)據(jù)量超過幾百k的時候,接口接收不到數(shù)據(jù)或者接收為null。
@RequestMapping(value = "/rcv",method = RequestMethod.POST)
public ResInfo<String> pullApi(HttpServletRequest request) {
String channel = request.getParameter("channel");
}
在application.properties里添加:
spring.http.multipart.max-file-size=-1
spring.http.multipart.max-request-size=-1
默認(rèn)值:
private String maxFileSize = "1MB"; private String maxRequestSize = "10MB";
這個設(shè)置是大小不限制,主要是這個設(shè)置。
server.tomcat.max-http-post-size=-1
補(bǔ)充知識:spring boot post請求數(shù)據(jù)太大接收不到參數(shù)(參數(shù)為空)報400錯誤。
spirng boot發(fā)送的請求,有的參數(shù)數(shù)據(jù)量大,有的參數(shù)數(shù)據(jù)量小。數(shù)據(jù)量大的發(fā)送不到后端,報400錯誤。
首先說以jetty為內(nèi)嵌服務(wù)器的時候:
1、修改yml文件或者properties文件,
server.max-http-post-size=200*1024*1024,設(shè)置為200m,總夠了吧,可以按照量設(shè)置小一點(diǎn)。
Spring Boot 1.4.0.M2之后就可以使用這個屬性。適合于不修改代碼,快速重新部署。
2、在java代碼里面實(shí)現(xiàn):
@Bean
public EmbeddedServletContainerCustomizer jettyCustomizer() {
return new EmbeddedServletContainerCustomizer() {
@Override
public void customize(ConfigurableEmbeddedServletContainer container) {
if (container instanceof JettyEmbeddedServletContainerFactory) {
((JettyEmbeddedServletContainerFactory) container)
.addServerCustomizers(new JettyServerCustomizer() {
@Override
public void customize(Server server) {
setHandlerMaxHttpPostSize(200 * 1024 * 1024, server.getHandlers());
}
private void setHandlerMaxHttpPostSize(int maxHttpPostSize,
Handler... handlers) {
for (Handler handler : handlers) {
if (handler instanceof ContextHandler) {
((ContextHandler) handler)
.setMaxFormContentSize(maxHttpPostSize);
}
else if (handler instanceof HandlerWrapper) {
setHandlerMaxHttpPostSize(maxHttpPostSize,
((HandlerWrapper) handler).getHandler());
}
else if (handler instanceof HandlerCollection) {
setHandlerMaxHttpPostSize(maxHttpPostSize,
((HandlerCollection) handler).getHandlers());
}
}
}
});
}
}
};
}
Spring Boot 1.3.x之后可以使用這個功能。
3、設(shè)置接收數(shù)據(jù)在 request body里面。上面兩種情況適合于數(shù)據(jù)不放在request body里面的。
tomcat應(yīng)該是類似的。
參考https://stackoverflow.com/questions/36872540/spring-boot-rest-service-form-too-large
以上這篇SpringBoot http post請求數(shù)據(jù)大小設(shè)置操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Flyway詳解及Springboot集成Flyway的詳細(xì)教程
Flayway是一款數(shù)據(jù)庫版本控制管理工具,,支持?jǐn)?shù)據(jù)庫版本自動升級,Migrations可以寫成sql腳本,也可以寫在java代碼里。這篇文章主要介紹了Flyway詳解及Springboot集成Flyway的詳細(xì)教程的相關(guān)資料,需要的朋友可以參考下2020-07-07
SpringBoot實(shí)現(xiàn)數(shù)據(jù)加密脫敏的示例代碼
這篇文章主要為大家學(xué)習(xí)介紹了SpringBoot如何利用注解+反射+AOP實(shí)現(xiàn)數(shù)據(jù)加密脫敏的功能,文中的示例代碼講解詳細(xì),需要的可以參考一下2023-08-08
Java Guava排序器Ordering原理及代碼實(shí)例
這篇文章主要介紹了Java Guava排序器Ordering原理及代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-11-11
基于Java實(shí)現(xiàn)多線程下載并允許斷點(diǎn)續(xù)傳
這篇文章主要介紹了基于Java實(shí)現(xiàn)多線程下載并允許斷點(diǎn)續(xù)傳,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-03-03
SpringBoot自定義加載yml實(shí)現(xiàn)方式,附源碼解讀
這篇文章主要介紹了SpringBoot自定義加載yml實(shí)現(xiàn)方式附源碼解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
Java concurrency集合之ConcurrentSkipListMap_動力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了Java concurrency集合之ConcurrentSkipListMap的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06

