当前位置: 首页 > news >正文

@RequestBody详解:用于获取请求体中的Json格式参数

获取请求体中的Json格式参数 (@RequestBody)

当前端将一些比较复杂的参数转换成Json字符串通过请求体传递过来给后端,这种时候就可以使用@RequestBody注解获取请求体中的数据。

而json字符串是包含在请求体中的,使用请求体传参通常都是使用POST请求

SpringBoot的web启动器已经默认导入了jackson的依赖,不需要再额外导入依赖了。

实体类:

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {private String name;private Integer age;private String gender;
}

请求体数据

{"name":"z","age":"3","gender":"男"}

1.获取前端传的参数封装成实体对象

如下把Json数据获取出来封装User对象

@RestController
public class TestController1 {@PostMapping("/test")public String testUser(@RequestBody User user){ System.out.println(user);return user.toString();}
}

打印了获取到的 User 对象,它会输出类似于 User(name=z, age=3, gender=男)

2.获取参数封装成Map集合

也可以把该数据获取出来封装成Map集合:

   
 @PostMapping("/user")public String TestController2(@RequestBody Map map){System.out.println(map);return "Test2";}

如果请求体传递过来的数据是一个User集合转换成的json,Json数据可以这样定义:

[{"name":"z","age":4},{"name":"zz","age":5},{"name":"zzz","age":6}]

方法定义:

   
 @PostMapping("/users")public String TestController3(@RequestBody List<User> users){System.out.println(users);return "test3";}

假如是复杂对象,按照上面json定义方式结合在一起写即可:

{   
"id":1,
"Users":[{"name":"z","age":4},{"name":"zz","age":5},{"name":"zzz","age":6}],
"score":["100","0","99"]
}

  如果需要使用@RequestBody来获取请求体中Json并且进行转换,要求请求头 Content-Type 的值要为: application/json 。也就是前端以Content-Type 为application/json,传递json字符串数据,后端以@RequestBody 模型接收数据。

——————————————————————————————————————————

其他Controller类常用的注解可以这个文章的汇总:Web开发Controller类详解-CSDN博客

相关文章:

  • 静态HTTP的常见问题和解决方法
  • 洛谷——【数据结构1-2】二叉树
  • JavaOOP篇----第十六篇
  • 机器学习之过拟合和欠拟合
  • 由浅入深,一文掌握NGINX知识文集
  • 模式识别与机器学习(八):决策树
  • 【量化金融】证券投资学
  • TUP实现一对一聊天
  • Kubernetes介绍
  • 7-1 递归二路归并排序
  • 运筹视角下,体系化学习机器学习算法原理的实践和总结
  • ubuntu 18/20/22 安装 mysql 数据库
  • HUAWEI华为笔记本电脑MateBook D 14 2022款 i5 集显 非触屏(NbDE-WFH9)原装出厂Windows11系统21H2
  • Postman接口测试(超详细整理)
  • 在Jetpack Compose中使用ExoPlayer实现直播流和音频均衡器
  • 08.Android之View事件问题
  • CAP 一致性协议及应用解析
  • Docker下部署自己的LNMP工作环境
  • Facebook AccountKit 接入的坑点
  • fetch 从初识到应用
  • Hexo+码云+git快速搭建免费的静态Blog
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • Python3爬取英雄联盟英雄皮肤大图
  • rc-form之最单纯情况
  • react 代码优化(一) ——事件处理
  • Spring核心 Bean的高级装配
  • uva 10370 Above Average
  • Web设计流程优化:网页效果图设计新思路
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 事件委托的小应用
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • ​Linux·i2c驱动架构​
  • #1014 : Trie树
  • #Linux(权限管理)
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • (07)Hive——窗口函数详解
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (力扣题库)跳跃游戏II(c++)
  • (利用IDEA+Maven)定制属于自己的jar包
  • (转)3D模板阴影原理
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .NET Core WebAPI中封装Swagger配置
  • .NET Core 版本不支持的问题
  • .Net Core与存储过程(一)
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • .NET 中什么样的类是可使用 await 异步等待的?
  • @我的前任是个极品 微博分析
  • [<死锁专题>]