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

springboot 接口参数接收,body和param什么区别,分别怎么使用

温馨提示:本文由ai生成,请注意辨别阅读,仅供思路参考

1. ​​@RequestBody​​ 和 ​​@RequestParam​​ 的区别
(1) 数据来源
  • @RequestBody​:接收HTTP请求的请求正文(Body)数据,通常是JSON格式。
  • @RequestParam​:接收HTTP请求的查询参数(URL参数)或表单参数
(2) 数据格式
  • @RequestBody​:数据以JSON或XML等格式发送,适合复杂的对象数据。
  • RequestParam​:数据以键值对的形式发送,适合简单的参数。
(3) HTTP方法
  • @RequestBody​:通常用于POST、PUT、PATCH等需要传递大量数据的请求方法。
  • RequestParam​:适用于GET、DELETE、POST等方法,尤其是需要传递简单参数的场景。
(4) 数据类型
  • @RequestBody​:可以接收对象类型(Java Bean)或集合类型(List、Map等)。
  • RequestParam​:只能接收简单类型(String、Integer、Boolean等)。

2. ​​@RequestBody​​ 的使用
(1) 示例代码
@PostMapping("/api/user")
public ResponseEntity<User> createUser(@RequestBody User user) {// 业务逻辑处理return ResponseEntity.ok(user);
}
(2) 请求示例

发送一个JSON格式的POST请求:

curl -X POST -H "Content-Type: application/json" -d '{"id": 1,"username": "johnDoe","email": "john@example.com"
}' http://localhost:8080/api/user
(3) 使用场景
  • 提交表单数据:适合传递复杂的对象数据。
  • 创建或更新资源:用于RESTful API的POST、PUT请求。
  • 传递JSON/XML数据:适合需要序列化为Java对象的场景。

3. ​​@RequestParam​​ 的使用
(1) 示例代码
@GetMapping("/api/users")
public ResponseEntity<List<User>> getUsers(@RequestParam(defaultValue = "1") int page,@RequestParam(defaultValue = "10") int size) {// 业务逻辑处理return ResponseEntity.ok(users);
}
(2) 请求示例

发送一个GET请求:

curl http://localhost:8080/api/users?page=1&size=10
(3) 使用场景
  • 查询数据:用于分页、过滤、排序等场景。
  • 删除资源:用于传递ID或其他标识符。
  • 表单提交:适合简单的键值对数据。

4. 如何选择?

场景

推荐使用

原因

提交复杂数据

​@RequestBody​

适合JSON/XML格式的对象数据,方便映射到Java对象。

查询数据

​@RequestParam​

适合简单的查询参数,例如分页、过滤、排序。

创建/更新资源

​@RequestBody​

RESTful API中常用于POST/PUT请求,传递资源的完整数据。

删除资源

​@RequestParam​

传递ID或其他标识符,适合DELETE请求。

表单提交

​@RequestParam​

适合简单的键值对数据,常用于GET和POST请求中的表单数据。


5. 总结
  • @RequestBody​:用于接收请求正文中的复杂数据,适合JSON/XML格式。
  • @RequestParam​:用于接收URL参数或表单参数,适合简单的键值对数据。

根据具体的业务需求和HTTP方法选择合适的注解,确保API接口的设计清晰且易于维护。

相关文章:

  • SpringCloud+Vue汽车、单车充电桩源码实现:从架构设计到核心模块解析
  • Prufer序列 学习笔记
  • SNMPv3 的安全命名空间详解
  • 需要做一款小程序,用来发券,后端如何进行设计能够保证足够安全?
  • MySQL 多表查询、事务
  • 交叉熵损失函数的优势
  • Java常见异常详解及解决方案(九)
  • 【Git】关于项目开发分支的使用规范
  • 分库分表之优缺点分析
  • 结合 STM32CubeMX 使用 FreeRTOS 实时操作系统
  • XXE(XML外部实体注入)详解
  • 基于集体智能长尾识别的超声乳腺病变亚型分类|文献速递-深度学习医疗AI最新文献
  • [Jenkins在线安装]
  • 关于机器学习中迁移学习与深度学习的思考
  • CMake基础:常用内部变量和环境变量的引用
  • ntfs!CcGetDirtyPages函数分析之DirtyPages=0x1和TargetAttribute=0xe0的一个例子
  • 借助AI学习编程,走向架构师之路
  • AntV F2入门教程
  • OpenCV CUDA模块设备层---- 绝对值函数abs()
  • HarmonyOS 5 原子化服务卡片测试全攻略
  • app建设网站公司/百度广告怎么做
  • 17网站一起做网店普宁/游戏推广对接平台
  • 广州网站建设市场/公关服务
  • 吕梁做网站的公司/如何做电商赚钱
  • 高端品质网站建设/小程序制作
  • wordpress 日期调用/快速排名优化seo