当前位置: 首页 > news >正文

What is `@RequestBody ` does?

@RequestBodySpringMVC框架中的注解,通常与POSTPUT等方法配合使用。当客户端发送包含JSON或XML格式数据的请求时,可以通过该注解将请求体内容绑定到Controller方法参数

作用

自动反序列化:
SpringMVC会根据@RequestBody注解的参数类型,利用Jackson库(默认配置下)或其他MessageConverter将HTTP请求体中的JSON或XML数据转换成对应的Java对象。

支持复杂数据结构:
可以轻松处理嵌套对象数组集合等复杂数据结构,将其映射为Java实体类自定义对象

使用样例

部份参数

# 对应请求示例(假设User类有username和password属性):POST /users HTTP/1.1Content-Type: application/json{"username": "john.doe","password": "secret"}@PostMapping("/users")
public User createUser(@RequestBody User user) {// 将请求体中的JSON或XML数据转换为User对象userService.save(user);return user;
}

接收并处理嵌套对象

# 对应请求示例:POST /users HTTP/1.1Content-Type: application/json{"username": "john.doe","password": "secret","address": {"street": "123 Main St.","city": "Springfield"}}@PostMapping("/users")
public User createUser(@RequestBody UserRequest userRequest) {User user = new User();user.setUsername(userRequest.getUsername());user.setPassword(userRequest.getPassword());user.setAddress(userRequest.getAddress());userService.save(user);return user;
}public class Address {private String street;private String city;// getters and setters...
}public class UserRequest {private String username;private String password;private Address address;// getters and setters...
}

处理数组或集合数据

# 对应请求示例(创建多个用户):POST /batch/users HTTP/1.1Content-Type: application/json[{"username": "user1","password": "pass1"},{"username": "user2","password": "pass2"}]@PostMapping("/batch/users")
public List<User> createUsers(@RequestBody List<UserRequest> userRequests) {List<User> users = new ArrayList<>();for (UserRequest request : userRequests) {User user = new User();// map request properties to user object...users.add(user);}userService.saveAll(users);return users;
}

使用 @RequestBody 和自定义JSON属性名映射

# 对应请求示例(使用与Java字段不同的JSON属性名):POST /users HTTP/1.1Content-Type: application/json{"user_name": "john.doe","pwd": "secret"}@PostMapping("/users")
public User createUser(@RequestBody UserRequest userRequest) {User user = new User();user.setUsername(userRequest.getUsername());user.setPassword(userRequest.getPassword());userService.save(user);return user;
}public class UserRequest {@JsonProperty("user_name")private String username;@JsonProperty("pwd")private String password;// getters and setters...
}
http://www.lryc.cn/news/280708.html

相关文章:

  • Windows安装Rust环境(详细教程)
  • Marin说PCB之传输线损耗---趋肤效应和导体损耗01
  • 八:分布式锁
  • 示例:php将文本内容写入一个文件(面向过程写法)
  • Flutter开发进阶之并发操作数据库
  • docker应用:搭建uptime-kuma监控站点
  • 在illustrator中按大小尺寸选择物体 <脚本 018>
  • leetcode - 934. Shortest Bridge
  • k8s的存储卷、数据卷
  • 流星全自动网页生成系统重构版源码
  • vscode打开c_cpp_properties.json文件的一种方式
  • 发起人自选-钉钉审批
  • 电脑DIY-显卡
  • vue3+vite+ts+pinia新建项目(略详细版)
  • 深入理解 Flink(五)Flink Standalone 集群启动源码剖析
  • SpringCloud Aliba-Nacos-从入门到学废【2】
  • web前端算法简介之字典与哈希表
  • 【uview2.0】Keyboard 键盘 与 CodeInput 验证码输入 结合使用 uview
  • 解决chromebook kabylake安装linux没有声音问题
  • Spring Boot - Application Events 的发布顺序_ApplicationContextInitializedEvent
  • 由jar包冲突导致的logback日志不输出
  • app开发——安卓native开发思路记录
  • 黑马程序员JavaWeb开发|案例:tlias智能学习辅助系统(1)准备工作、部门管理
  • C# .NET SQL sugar中 IsAny进行根据条件判断数据是否存在 IsAny的使用
  • 《Git学习笔记:Git入门 常用命令》
  • 小程序跳转安卓会跳转两次 iOS不会的解决方案
  • vue3+ts 中实现压缩图片、blob 转 base64
  • (框架设计-基础库建设) boost 库
  • 将ResultSet转实体类
  • Web后端开发