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

相关推荐
Flittly10 小时前
【AgentScope Java新手村系列】(16)从RAG到多路检索
java·spring boot·spring
小兔崽子去哪了11 小时前
Java 生成二维码解决方案
java·后端
人活一口气15 小时前
从JVM调优到MCP协议:Java全栈技术体系深度总结与企业级架构实践
java·spring boot
NE_STOP17 小时前
Vibe Coding -- 完整项目案例实操
java
荣码17 小时前
GraphRAG:普通RAG只能回答"点"的问题,我踩了4个坑才搞懂
java·python
SimonKing17 小时前
Google第三方授权登录
java·后端·程序员
明月光81817 小时前
从一行 @Builder 说起:重新拾起 Java 的 Lombok、注解与 Builder 模式
java
考虑考虑1 天前
Mybatis实现批量插入
java·后端·mybatis
咖啡八杯1 天前
GoF设计模式——中介者模式
java·后端·spring·设计模式
青石路1 天前
记一次多JDK版本问题的排查,一坑套一坑,差点没爬上来
java