基础知识介绍:
@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);而最常用的使用请求体传参的无疑是POST请求了,所以使用@RequestBody接收数据时,一般都用POST方式进行提交。在后端的同一个接收方法里,@RequestBody与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。

注:一个请求,只有一个RequestBody;一个请求,可以有多个RequestParam。

注:当同时使用@RequestParam()和@RequestBody时,@RequestParam()指定的参数可以是普通元素、
数组、集合、对象等等(即:当,@RequestBody 与@RequestParam()可以同时使用时,原SpringMVC接收
参数的机制不变,只不过RequestBody 接收的是请求体里面的数据;而RequestParam接收的是key-value
里面的参数,所以它会被切面进行处理从而可以用普通元素、数组、集合、对象等接收)。
即:如果参数时放在请求体中,application/json传入后台的话,那么后台要用@RequestBody才能接收到;
如果不是放在请求体中的话,那么后台接收前台传过来的参数时,要用@RequestParam来接收,或
则形参前 什么也不写也能接收。

注:如果参数前写了@RequestParam(xxx),那么前端必须有对应的xxx名字才行(不管其是否有值,当然可以通
过设置该注解的required属性来调节是否必须传),如果没有xxx名的话,那么请求会出错,报400。

注:如果参数前不写@RequestParam(xxx)的话,那么就前端可以有可以没有对应的xxx名字才行,如果有xxx名
的话,那么就会自动匹配;没有的话,请求也能正确发送。
追注:这里与feign消费服务时不同;feign消费服务时,如果参数前什么也不写,那么会被默认是
@RequestBody的。

如果后端参数是一个对象,且该参数前是以@RequestBody修饰的,那么前端传递json参数时,必须满足以下要求:

1、后端@RequestBody注解对应的类在将HTTP的输入流(含请求体)装配到目标类(即:@RequestBody后面的类)时,会根据json字符串中的key来匹配对应实体类的属性,如果匹配一致且json中的该key对应的值符合(或可转换为)实体类的对应属性的类型要求时,会调用实体类的setter方法将值赋给该属性。

2、json字符串中,如果value为""的话,后端对应属性如果是String类型的,那么接受到的就是"",如果是后端属性的类型是Integer、Double等类型,那么接收到的就是null。

3、json字符串中,如果value为null的话,后端对应收到的就是null。

4、如果某个参数没有value的话,在传json字符串给后端时,要么干脆就不把该字段写到json字符串中;要么写value时, 必须有值,null 或""都行。千万不能有类似"stature":,这样的写法,如:

@RequestBody的使用方法相关推荐

  1. Android客户端连接服务器- OKHttp的简单实用方法

    文章目录 一 .OKHttp简介 二. OkHttp3使用 1.创建HTTPClient实例 2.Get请求 3.POST请求 三.Timeouts(超时) **写在前面:本文只是对OKHttp3的简 ...

  2. 6、Spring MVC 之 定义@RequestMapping处理方法

    @RequestMapping处理器方法可以非常灵活的签名.支持的方法参数和返回值在以下部分中描述.大多数参数可用于任意顺序除了BindingResult这个唯一的参数例外.下一节中将会描述. not ...

  3. SpringMVC注解整理

    2019独角兽企业重金招聘Python工程师标准>>> 使用注解之前要开启自动扫描功能 其中base-package为需要扫描的包(含子包). <context:compone ...

  4. SpringMVC 4.0常用注解

    为什么80%的码农都做不了架构师?>>>    注解的出现终结了使用XML配置文件的年代,它让程序拥有更高的可读性,可配置性与灵活性.上一篇介绍的SpringMVC 2.5版本的注解 ...

  5. 求求你别在用IF ELSE校验参数了

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 本文看点 前言 验证数据是贯穿所有应用程序层(从表示层到 ...

  6. SpringMVC控制器接收不了PUT提交的参数的解决方案

    找到web项目的web.xml的文件的ContextLoaderListener这个监听器,将这个改为下面的配置: <!-- 解决PUT请求无法提交表单数据的问题 --> <filt ...

  7. 帮你梳理springboot所有常用注解

    文章目录 1.springmvc注解 1. @RestController.@ResponseBody.@Controller 2. @RequestMapping.@GetMapping.@Post ...

  8. Android 对okhttp的封装

    不废话,需求:根据服务器API封装网络请求,怎么办? 简单封装okhttp的get,post,put,delete请求: PersistentCookieJar cookieJar = new Per ...

  9. android okhttp使用cookie请求

    今天,简单讲讲Android的http使用cookie请求. 现在,做一个功能,出现一个奇怪现象,就是老是登陆成功后,发送请求获取消息,老是提示我没有登陆.我自己都不知道是什么原因,这个也是我对网络通 ...

最新文章

  1. FaaS、PaaS和无服务器体系结构的优势
  2. js控制select数据绑定下拉列表
  3. 也跟90后小朋友聊聊
  4. 数据结构 【实验7 二叉树基本操作】
  5. Pytest高级进阶之Fixture
  6. apache开源项目--nutch
  7. 【学亮IT手记】Ajax跨域问题精讲--jQuery解决跨域操作
  8. C#基于RabbitMQ实现客户端之间消息通讯实战演练
  9. 记一次PLC和脉冲型伺服电机的接线方法_20210915
  10. ipv6单播地址包括哪两种类型_IPV6详细讲解
  11. java微信获取素材列表_微信公众号开发之获取素材列表并保存
  12. GDK动态代理原理分析
  13. C# VS2017中Windows窗体更改图标
  14. AG6202-MAQ|安格AG6202|HDMI转VGA方案|AG安格设计方案
  15. vue+Element中append-to-body的使用
  16. 互联网公司logo logo制作
  17. 两天碾转两个学校办卡地推
  18. 集成学习之 如何进行多样性增强
  19. 博客管理系统-软件测试分析报告
  20. hive 本地模式 远程模式操作

热门文章

  1. 利用geth搭建私链
  2. 贩妖记 第四十五章,怨气法宝
  3. 不小心把手机里的照片删了怎么恢复
  4. 网易云(网易蜂巢)对象存储--mp4播放
  5. 玩转传感器——DHT11温湿度传感器(STM32版)
  6. php 微信小程序sdk,带你深入了解微信小程序集成环信SDK
  7. DataBase_事务的ACID属性
  8. Apache部署静态网站
  9. 豪华奔驰SUV选择悠耐,这样的车衣值得拥有!
  10. 虚拟机网络连接图标消失问题