SpringBoot关于@RequestBody请求参数
一.Post请求中Dto参数带@RequestBody
方法代码:
@PostMapping("/test")public UserDto getUserParam(@RequestParam String myName,@RequestHeader(value = "token", required = false) String token,@RequestAttribute(value = "attr", required = false) String attr,@RequestBody UserDto userDto)
1.PostMan请求(Body不写任何东西):
请求结果:
结果返回报错,
我们看下源码,
1.【RequestResponseBodyMethodProcessor 类参数解析器】方法来处理,循环默认的10种消息转换器,找到当前参数类型进行解析
2.这里注意@RequestBody类型参数会用 MappingJackson2HttpMessageConverter 这个消息转换器,
3.判断当前类型无法解析当前参数,返回null,判断为空并且参数是必填的,就会抛出异常
2.PostMan请求(Body只写 {}):
请求结果:
结果返回成功,
我们看下源码,
1.经过消息解析器返回的结果不是null,只不过dto内部属性都是空的,但是并不会报错
二.Post请求中Dto参数不带@RequestBody
方法代码:
@PostMapping("/test")public UserDto getUserParam(@RequestParam String myName,@RequestHeader(value = "token", required = false) String token,@RequestAttribute(value = "attr", required = false) String attr,UserDto userDto)
1.PostMan请求(Body不写任何东西或者写参数信息):
请求结果:
返回结果不报错,但是也没有赋值成功
2.PostMan请求(dto参数写到param参数):
请求结果:
返回结果成功,赋值成功
我们看下源码,
1.【ModelAttributeMethodProcessor 类参数解析器】方法来处理,获取请求中所有以param类型的参数,找到当前dto进行解析,如果找到和dto属性的参数名称一样就赋值
总结:
1.dto实体类型的参数,标注@RequestBody(Default Required=true)注解时,Servlet一定会读取发送的Body体中的json参数,
(1)Body体中什么都不传,返回会报错
(2)Body体中传{},返回不会报错,解析结果是属性为null的dto
(3)Body体中传错误参数的{"a":1},返回不会报错,解析结果是属性为null的dto
(4)【RequestResponseBodyMethodProcessor 类参数解析器】解析参数
2.dto实体类型的参数,什么注解都不标,Servlet会去读取发送的Param类似url?传参的参数
(1)Body体中什么都不传或者传{},返回不会报错,解析结果是属性为null的dto
(2)Param类似url?传参,返回才会成功,解析结果才会成功
(3)【ModelAttributeMethodProcessor 类参数解析器】解析参数
SpringBoot关于@RequestBody请求参数相关推荐
- springboot 处理put请求参数
put请求参数理论上是在请求的body中(json传输),但是使用如下方式不能得到: @RequestParam Integer meetingId,@RequestParam Boolean pas ...
- SpringBoot - 获取Get请求参数详解
利用 Spring Boot 来制作 Web 应用,就必定会涉及到前端与后台之间互相传递参数.下面演示 Controller 如何接收以 GET 方式传递过来的参数. 一.直接在请求路径中 (1).假 ...
- SpringBoot - 获取Get请求参数详解(附样例:非空、默认值、数组、对象)
利用 Spring Boot 来制作 Web 应用,就必定会涉及到前端与后台之间互相传递参数.下面演示 Controller 如何接收以 GET 方式传递过来的参数. 一.参数直接在路径中 (1)假设 ...
- SpringBoot 获取 Get 请求参数详解
叙述 利用 Spring Boot 来制作 Web 应用,就必定会涉及到前端与后台之间互相传递参数. 下面演示 Controller 如何接收以 GET 方式传递过来的参数. 解决方案 参数直接在路径 ...
- springboot获取URL请求参数的几种方法
原文地址:http://www.cnblogs.com/xiaoxi/p/5695783.html 1.直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于pos ...
- SpringBoot的GET请求参数包含[]等特殊符号,返回400状态码
今天系统2.1版本上线时,忽然发现一个问题,通知公告模块中的一个文件不能下载了,而其他的是可以的,经过仔细的排查发现,是由于文件名中包含了英文的[],问题如下图: 原因分析 Tomcat的新版本中增加 ...
- springboot获取多个请求参数_springboot获取URL请求参数的多种方式
1.直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交. /** * 1.直接把表单的参数写在Controller相应的方法的形参中 * @pa ...
- springboot post 请求参数过长请求接口报错 An HTTP line is larger than 4096 bytes
springboot项目post请求参数过长请求接口报错如下: 解决办法将post请求参数值调大: server:tomcat:max-http-form-post-size: 5MB
- springboot使用validator进行参数校验
前言 公司项目是前后端分离的,为了保证前端传输数据的合法性,对参数进行校验就很有必要.hibernate-validator就是一个不错的参数校验的解决方法.spring-boot-starter-w ...
最新文章
- mysql5.7gtid_MySQL5.7 GTID 运维实战
- 013:ADS semihosting与硬件重定向(转)
- 北邮dsp matlab实验,北京邮电大学《数字信号处理》门爱东-DSP实验.pdf
- 【计算机组成原理】逻辑运算
- re管理器java格式_正则表达式工具类——ReUtil
- hbase中为何不能向表中插入数据_生产环境使用HBase,你必须知道的最佳实践 | 百万人学AI...
- AOP拦截+权限验证+返回默认接口对象
- 浏览器正确理解和使用GBK及UTF-8(UTF-8 + BOM)网页编码
- 突发,Spring框架发现重大漏洞!
- 稳压二极管型号大全(转载)
- matlab imagesc 白色,[转载]matlab 中imagesc的用法
- CRNN原理详解、代码实现及BUG分析
- SOUI Text控件不同状态设置不同颜色的方法
- 洛菲创意字体设计分享--绿斗堂字体网
- 小米路由器r2d_小米路由器R2D亮黄灯维修
- 微信小程序倒计时功能
- Git和GitHub的关系和区别
- 防火墙NAT综合实验——nat控制,豁免,远程,DMZ区域(带命令)
- 美通社企业新闻汇总 | 2019.1.23 | 上海迪士尼建疯狂动物城园区;戴森运营总部移至新加坡...
- 杭电oj 1002 C语言解法
热门文章
- Tomcat-Server.xml配置图片路径
- android studio刷rom,Android Studio 之 ROM【1】, Entity,Dao,Database
- python图片隐写_基于python的LSB隐写与分析
- git 代码回滚_谁说用 Git 一定要用命令行?试试 SourceTree 吧
- matlab 按文件名排序,在MATLAB中对字符串进行排序,如Windows 7,对资源管理器中的文件名进行排序(尊重数字中间字符串)...
- jtextpane设置不能选中_电脑为什么打不开指定的网站?什么是DNS解析我要如何设置DNS...
- React传递参数的多种方式
- Maven入门:使用Nexus搭建Maven私服及上传下载jar包
- netstat 查看端口
- [转一下]未来卫星通信发展趋势