@RequestBody 注解处理的数据类型

@RequestBody 注解主要用于处理 HTTP 请求体(Request Body)中的数据,它能够将请求体中的内容(如 JSON、XML 等格式)转换为 Java 对象。它支持多种数据类型,包括但不限于以下几种:

‌1、单个对象(POJO)‌:

这是最常见的用法。你可以定义一个 Java 类(POJO),@RequestBody 会将请求体中的 JSON 数据自动映射到该类的属性上。

例如,定义一个 User 类,包含 name 和 age 属性,前端发送的 JSON 数据 { "name": "张三", "age": 25 } 会被自动转换为 User 对象。

2、 ‌集合(List、Set 等)‌:

@RequestBody 可以绑定到集合类型,接收一个包含多个对象的 JSON 数组。

例如,接收一个 JSON 数组 [{ "name": "张三", "age": 25 }, { "name": "李四", "age": 30 }],可以使用 @RequestBody List<User> users 来接收。

3、 ‌数组‌:

与集合类似,@RequestBody 也可以绑定到数组类型。

例如,接收一个 JSON 数组 [1, 2, 3],可以使用 @RequestBody int[] numbers 来接收。

‌Map‌:

@RequestBody 可以绑定到 Map 类型,适用于接收动态键值对的数据。

例如,接收一个 JSON 对象 { "key1": "value1", "key2": "value2" },可以使用 @RequestBody Map<String, Object> data 来接收。

4、 ‌字符串(String)‌:

虽然不常见,但 @RequestBody 也可以接收原始的字符串数据,此时请求体中的内容会被直接读取为字符串。

例如,接收纯文本或非结构化数据,可以使用 @RequestBody String rawContent。

5、 ‌其他复杂类型‌:

可以接收包含嵌套对象、复杂集合结构等的 JSON 数据,只要 Java 类的结构与 JSON 结构匹配即可。

关键点‌:

‌Content-Type‌:@RequestBody 通常用于处理 application/json、application/xml 等非表单格式的数据。如果请求头中的 Content-Type 设置为 application/x-www-form-urlencoded,则通常使用 @RequestParam 来接收。

‌消息转换器(Message Converters)‌:Spring 会根据请求的 Content-Type 自动选择合适的消息转换器(如 Jackson 用于 JSON,JAXB 用于 XML)来将请求体数据反序列化为 Java 对象。

‌HTTP 方法‌:@RequestBody 主要用于 POST、PUT 和 PATCH 请求,因为这些请求具有请求体。

‌与 @RequestParam 的区别‌:@RequestBody 接收请求体中的数据,而 @RequestParam 接收 URL 查询参数或表单数据。

相关推荐
棉花骑士7 小时前
【AI Agent】面向 Java 工程师的Claude Code Harness 学习指南
java·开发语言
爱敲代码的小鱼7 小时前
springboot(2)从基础到项目创建:
java·spring boot·spring
迈巴赫车主8 小时前
蓝桥杯19724食堂
java·数据结构·算法·职场和发展·蓝桥杯
i220818 Faiz Ul9 小时前
动漫商城|基于springboot + vue动漫商城系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·动漫商城系统
海兰9 小时前
【实战】MCP 服务在 Nacos 中注册状态分析与优化
android·java·github·银行系统·银行ai
Makoto_Kimur10 小时前
Java 打印模板大全
java·开发语言·排序算法
程序员榴莲10 小时前
Java(十)super关键字
java·开发语言
HAPPY酷10 小时前
Python高级架构师之路——从原理到实战
java·python·算法
Boop_wu10 小时前
[Java 算法 ] 链表
java·算法·链表
ybwycx11 小时前
SpringBoot下获取resources目录下文件的常用方法
java·spring boot·后端