Spring Boot接收前端参数的注解总结
在 Spring Boot 里,后端控制器方法(Controller)可以通过不同的注解来“接收前端传来的参数”,这些注解分别对应不同的传参方式。
🌟 常见的参数接收注解对比
| 注解 | 来源 | 用法 | 示例 URL / 请求体 | 说明 |
|---|---|---|---|---|
@PathVariable | 路径变量 | 从 URL 路径中取参数 | /user/123 | 用于 RESTful 风格接口,例如 /wish/delete/13 |
@RequestParam | 查询参数(URL 上 ? 后面) | 从 URL 的查询字符串取参数 | /wish/delete?wishId=13 | 适合简单参数 |
@RequestBody | JSON 请求体 | 从请求体中取参数 | {"wishId":13,"title":"test"} | 常用于 POST 请求 |
@RequestHeader | 请求头 | 从 HTTP header 中取值 | Authorization: Bearer xxx | 取请求头里的值 |
@CookieValue | Cookie | 从 Cookie 里取值 | - | 比较少用 |
@ModelAttribute | 表单参数 | 绑定到一个对象上(传统 form 表单) | - | 适用于 application/x-www-form-urlencoded |
💡 举例讲解
✅ 1️⃣ @PathVariable
@DeleteMapping("/wish/delete/{wishId}")
public boolean deleteWish(@PathVariable Long wishId) {return wishService.deleteWish(wishId);
}
👉 URL: DELETE /wish/delete/13
wishId = 13
✅ 2️⃣ @RequestParam
@PostMapping("/wish/delete")
public boolean deleteWish(@RequestParam Long wishId) {return wishService.deleteWish(wishId);
}
👉 URL: POST /wish/delete?wishId=13
wishId = 13
✅ 3️⃣ @RequestBody
@PostMapping("/wish/delete")
public boolean deleteWish(@RequestBody Map<String, Object> data) {Long wishId = (Long) data.get("wishId");return wishService.deleteWish(wishId);
}
👉 请求体:
{"wishId": 13
}
适用于前端使用 wx.request 发送 JSON 格式数据。
✅ 4️⃣ 组合对象绑定
你也可以直接接收一个对象:
@PostMapping("/wish/add")
public boolean addWish(@RequestBody Wish wish) {return wishService.addWish(wish);
}
👉 请求体:
{"title": "学习SpringBoot","description": "今天学@RequestParam"
}
🔍 小结
| 使用场景 | 推荐注解 |
|---|---|
REST 风格 URL /api/user/123 | @PathVariable |
URL 查询参数 /api/user?id=123 | @RequestParam |
JSON 请求体 { "id": 123 } | @RequestBody |
