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

背景:

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

默认值:

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 (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、设置接收数据在 request body里面。上面两种情况适合于数据不放在request body里面的。

tomcat应该是类似的。

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

以上这篇SpringBoot http post请求数据大小设置操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Jvm调优和SpringBoot项目优化的详细教程

    一.Jvm调优. 参考文章 1.先看一下未设置JVM参数的情况,默认情况下,没有设置任何Jvm参数. idea中安装VisualVM监控jvm的图文教程 2.设置Jvm参数. 配置参数: 关于这些设置的JVM参数是什么意思,参考Jvm调优. -XX:MetaspaceSize=128m (元空间默认大小) -XX:MaxMetaspaceSize=128m (元空间最大大小) -Xms1024m (堆最大大小) -Xmx1024m (堆默认大小) -Xmn256m (新生代大小) -Xss256

  • 详解SpringBoot配置连接池

    内置的连接池 目前spring Boot中默认支持的连接池有dbcp,dbcp2, tomcat, hikari三种连接池. 数据库连接可以使用DataSource池进行自动配置. 由于Tomcat数据源连接池的性能和并发,在tomcat可用时,我们总是优先使用它. 如果HikariCP可用,我们将使用它. 如果Commons DBCP可用,我们将使用它,但在生产环境不推荐使用它. 最后,如果Commons DBCP2可用,我们将使用它. 以上的几种连接池,可以通过在配置application文

  • 详解SpringBoot中异步请求和异步调用(看完这一篇就够了)

    一.SpringBoot中异步请求的使用 1.异步请求与同步请求 特点: 可以先释放容器分配给请求的线程与相关资源,减轻系统负担,释放了容器所分配线程的请求,其响应将被延后,可以在耗时处理完成(例如长时间的运算)时再对客户端进行响应.一句话:增加了服务器对客户端请求的吞吐量(实际生产上我们用的比较少,如果并发请求量很大的情况下,我们会通过nginx把请求负载到集群服务的各个节点上来分摊请求压力,当然还可以通过消息队列来做请求的缓冲). 2.异步请求的实现 方式一:Servlet方式实现异步请求

  • SpringBoot拦截器如何获取http请求参数

    1.1.获取http请求参数是一种刚需 我想有的小伙伴肯定有过获取http请求的需要,比如想 前置获取参数,统计请求数据 做服务的接口签名校验 敏感接口监控日志 敏感接口防重复提交 等等各式各样的场景,这时你就需要获取 HTTP 请求的参数或者请求body,一般思路有两种,一种就是自定义个AOP去拦截目标方法,第二种就是使用拦截器.整体比较来说,使用拦截器更灵活些,因为每个接口的请求参数定义不同,使用AOP很难细粒度的获取到变量参数,本文主线是采用拦截器来获取HTTP请求. 1.2.定义拦截器获

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

    背景: 使用http post请求方式的接口,使用request.getParameter("XXX");的方法获取参数的值,当数据量超过几百k的时候,接口接收不到数据或者接收为null. @RequestMapping(value = "/rcv",method = RequestMethod.POST) public ResInfo<String> pullApi(HttpServletRequest request) { String channe

  • Java Spring MVC获取请求数据详解操作

    目录 1. 获得请求参数 2. 获得基本类型参数 3. 获得POJO类型参数 4. 获得数组类型参数 5. 获得集合类型参数 6. 请求数据乱码问题 7. 参数绑定注解 @requestParam 8. 获得Restful风格的参数 9. 自定义类型转换器 1.定义转换器类实现Converter接口 2.在配置文件中声明转换器 3.在<annotation-driven>中引用转换器 10. 获得Servlet相关API 11. 获得请求头 11.1 @RequestHeader 11.2 @

  • BootstrapTable请求数据时设置超时(timeout)的方法

    使用bootstrapTable获取数据时,有时由于网络或者服务器的原因,无法及时获取到数据,页面显示一直处于等待状态.为了改善效果,考虑设置超时,请求发送后超时即显示无数据,过段时间重新发起请求. 实现上,bootstrapTable通过ajax获取数据,可以使用ajaxOptions选项设置ajax的一些属性. bootstrapTable要设置timeout,首先要将async属性设置为true,在bootstrapTable中async默认是false的.例如 $("#event_tab

  • 使用mysql记录从url返回的http GET请求数据操作

    业务场景需求及实现逻辑分析 在业务中,我们经常会碰到需要用HTTP GET请求数据的情况,比如http请求返回的结果如下所示: 那么,如果我们想将这些数据用mysql存储下来,那该怎么实现呢? 其实,调用python的httplib和MySQLdb包将会非常容易实现,httplib负责获取url的返回,MySQLdb负责对MySQL数据库进行操作.下面整理了关系逻辑图: 那么,我们开始代码开发: python依赖包准备 python需要用到的包至少有如下几个,其中MySQLdb依赖包的安装可以参

  • Vue生命周期activated之返回上一页不重新请求数据操作

    activated: 英文原意:使活动.触发 在Vue的生命周期函数中,这个好像用的不是特别多?(也许只是在我的工作中这个用的不多,或者说叫几乎不用这个) 一.需求 前不久在项目中有这样一个需求: 在订单页面的地址信息栏,默认通过接口填充了一个已经设置过的一个的默认地址,现在要跳转去地址列表重新选择一个地址并回填到订单页面的地址信息位置 二.尝试 常规操作: 我们通常会将通过接口请求数据的方法放在==created== 或者 ==mounted==这两个生命周期中的一个里面调用. 但是我们知道,

  • SpringBoot文件上传大小设置方式(yml中配置)

    目录 文件上传大小设置 上传文件大小yml参数配置 解决方法 文件上传大小设置 #文件大小 MB必须大写 #  maxFileSize 是单个文件大小 #  maxRequestSize是设置总上传的数据大小 spring:   servlet:     multipart:       enabled: true       max-file-size: 20MB       max-request-size: 20MB 提示: 必须配置,如果采用默认的配置,稍大的文件就不能上传了. 上传文件

  • springboot整合redis进行数据操作(推荐)

    redis是一种常见的nosql,日常开发中,我们使用它的频率比较高,因为它的多种数据接口,很多场景中我们都可以用到,并且redis对分布式这块做的非常好. springboot整合redis比较简单,并且使用redistemplate可以让我们更加方便的对数据进行操作. 1.添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starte

  • Vue切换组件实现返回后不重置数据,保留历史设置操作

    版权 1.<router-view ></router-view> 外层包围<keep-alive> </keep-alive> keep-alive作用将组件实例缓存下来 <keep-alive> <router-view></router-view> </keep-alive> 2.清除组件缓存 使用keep-alive 的 exclude="组件名" 属性 <keep-alive

  • SpringBoot Redis批量存取数据的操作

    SpringBoot Redis批量存取数据 springboot中的redisTemplate封装了redis批处理数据的接口,我们使用redisTemplate可以直接进行批量数据的get和set. package com.huateng.applacation.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.ann

  • SpringBoot yaml语法与数据读取操作详解

    目录 yaml yaml语法规则 字面值表示方式: 数组表示方式: 对象数组格式: 对象数组缩略格式: 读取yaml数据 编写yaml文件 读取单一数据 读取二级数据 读取数组数据 读取服务器端口号 读取对象属性 封装全部数据到Environment对象 读取yaml引用类型属性数据 application.yml MyDataSource 读取数据 变量的引用 application.yml 读取数据 context-path @Autowired报错解决方案 yaml YAML是一种数据序列

随机推荐