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

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

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

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

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

实体类:

java 复制代码
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private String name;
    private Integer age;
    private String gender;
}

请求体数据

java 复制代码
{"name":"z","age":"3","gender":"男"}

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

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

java 复制代码
@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集合:

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

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

java 复制代码
[{"name":"z","age":4},{"name":"zz","age":5},{"name":"zzz","age":6}]

方法定义:

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

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

java 复制代码
{   
"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博客

相关推荐
茶本无香1 小时前
Arthas 实战:线上“看 Map”的四种武器
java·map·arthas·线上定位
烂蜻蜓2 小时前
Flask入门教程(二十六):Session API——用户会话状态管理
后端·python·flask
霸道流氓气质2 小时前
Spring AI异常处理与重试机制
java·人工智能·spring
郑州光合科技余经理4 小时前
本地生活服务系统:成品模块和定制接口怎么划界
java·前端·人工智能·后端·系统架构·php·ai编程
萧瑟余晖4 小时前
Java深入解析篇三十三之密封类与接口(Sealed Classes)详解
java·开发语言
论迹复利7 小时前
FreeRTOS 在 RISC-V 上是如何“点火“的 —— 从 main() 到第一个任务的完整链路
java·开发语言·risc-v
小江的记录本8 小时前
【CSS】CSS 动画:transition、animation、transform、CSS3 新特性(附《思维导图》)
前端·css·安全·spring·前端框架·css3·动画
张宇Joaquin8 小时前
鲲鹏统一并行加速库KUPL--众核并行能力介绍
java·开发语言·网络
宸津-代码粉碎机8 小时前
AI攻防战升级!基于Spring AI构建Java应用自动免疫安全体系
java·大数据·开发语言·人工智能·python·安全·spring
2601_963749109 小时前
越华环保集团数字化污水治理:端边云采集架构与平台对接实现
java·大数据·架构