@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 查询参数或表单数据。

相关推荐
rannn_1118 小时前
【力扣hot100】链表专题|160、206、234、141、142
java·算法·leetcode·链表·面试·开发
IKUN家族9 小时前
Spring IoC&DI
java·spring·rpc
山荷枝11 小时前
03-框架--Spring
java·后端·spring
ChaHae-In11 小时前
SpringBoot统一功能处理
java·spring boot·后端
coder!mq11 小时前
说几个常见的语法糖?
java·开发语言·算法
gugucoding11 小时前
38. 【Java】Stream API(下):高级操作与性能
java·开发语言
心平气和量大福大12 小时前
android-实例-蒲公英-更新与安装-5-签名与生成APK
android·java·开发语言
9523613 小时前
Spring-cloud配置中心
java·spring·spring cloud·微服务
ydd10010013 小时前
寻找两个正序数组的中位数 Java 题解,二分分割详解
java·开发语言
真上帝的左手14 小时前
10. 软件设计&架构-Spring Security 7 整合CAS SSO 单点登录
java·spring·架构·sso