当前位置: 首页 > 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实现直播流和音频均衡器
  • 【Leetcode】101. 对称二叉树
  • 【刷算法】求1+2+3+...+n
  • Cookie 在前端中的实践
  • docker-consul
  • HashMap剖析之内部结构
  • JavaScript 奇技淫巧
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • leetcode讲解--894. All Possible Full Binary Trees
  • mac修复ab及siege安装
  • Python进阶细节
  • rabbitmq延迟消息示例
  • Rancher-k8s加速安装文档
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 创建一个Struts2项目maven 方式
  • 收藏好这篇,别再只说“数据劫持”了
  • 算法---两个栈实现一个队列
  • 算法之不定期更新(一)(2018-04-12)
  • 微服务入门【系列视频课程】
  • 系统认识JavaScript正则表达式
  • 线上 python http server profile 实践
  • (0)Nginx 功能特性
  • (20050108)又读《平凡的世界》
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (23)Linux的软硬连接
  • (5)STL算法之复制
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (多级缓存)多级缓存
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (七)Knockout 创建自定义绑定
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (转)Windows2003安全设置/维护
  • (转)关于多人操作数据的处理策略
  • (转)重识new
  • (转载)Linux网络编程入门
  • .net Signalr 使用笔记
  • .net 调用php,php 调用.net com组件 --
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器
  • /*在DataTable中更新、删除数据*/