关于SpringBoot参数接收的细节及tomcat对POST请求大小的限制
1 关于POST请求
POST附带的数据,常用的传参方式为Form Data和Requet Payload
Form Data形式:
即:当POST请求头中的Content-Type:application/x-www-from-urlencoded(默认),参数以标准的From Data形式提交,以&符号拼接
后端对应使用request.getParameter(name)获取参数
Requet Payload形式:
使用AJAX原生POST请求,请求头里设置Content-Type:application/json,请求的参数会显示在Request Payload中,参数格式为JSON格式
后端对应使用getRequestPayload方法获取参数
2 关于@RequestParam
@RequestParam
POST和GET均可使用
@RequestParam相当于整合了 request.getParamter(String s)和request.getparamterMap()两个方法的功能
只用于接收From Data形式提交的参数
3 关于@RequestBody
只可用于POST请求,GET请求不支持(因为GET请求没有HttpEntity)
只能绑定一个对象实体
只能有一个@RequestBody
4 当使用@RequestParam使用Form Data形式提交数据后,后端依然接收不到数据报400错误的解决
当排除注解使用错误,和Content-Type设置错误后,依然接收不到参数报400错误时,就要考虑tomcat对POST请求大小的限制
SpringBoot在配置文件中配置server.tomcat.max-http-form-post-size配置项,默认2MB大小限制
server.tomcat.max-http-form-post-size=-1//不做大小限制