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

发布于:2025-06-20 ⋅ 阅读:(18) ⋅ 点赞:(0)
温馨提示:本文由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接口的设计清晰且易于维护。


网站公告

今日签到

点亮在社区的每一天
去签到