[SpringBoot]前端请求参数的接收方式
核心速查表
| 数据来源位置 | 数据格式/类型 | 典型请求方式 | 关键注解 | Content-Type |
|---|---|---|---|---|
| URL 路径 | /users/{id} |
GET / DELETE | @PathVariable |
- |
| URL 参数 | ?id=1&name=so |
GET (主要) | @RequestParam |
- |
| Body (请求体) | JSON 字符串 | POST / PUT | @RequestBody |
application/json |
| Body (请求体) | 表单 (k=v&k=v) | POST | 无注解 (直接用对象接) | application/x-www-form-urlencoded |
| Body (请求体) | 文件上传 | POST | @RequestPart |
multipart/form-data |
| Header (请求头) | Token / 自定义头 | 任意 | @RequestHeader |
- |
详细代码示例
1. URL 路径参数 (@PathVariable)
场景:RESTful 风格接口,参数是 URL 的一部分。
- 请求:
GET /users/101
Java
1 | @GetMapping("/users/{id}") |
2. URL 查询参数 (@RequestParam)
场景:传统的问号传参,用于筛选、分页等。
- 请求:
GET /users?name=gemini&age=18
Java
1 | @GetMapping("/users") |
注意:如果参数名和变量名一致,且参数必传,其实可以省略
@RequestParam,但为了代码可读性,建议加上。
3. JSON 数据 (@RequestBody) —— 最常用
场景:前后端分离,前端发 JSON 对象。
- 请求头:
Content-Type: application/json - 请求体:
{"name": "Gemini", "age": 18}
Java
1 | @PostMapping("/json") |
4. 普通表单数据 (Form Data)
场景:传统 <form> 提交,或者 Postman 中选 x-www-form-urlencoded。
- 请求头:
Content-Type: application/x-www-form-urlencoded - 请求体:
name=Gemini&age=18
Java
1 | @PostMapping("/form") |
5. 文件上传 (@RequestPart 或 MultipartFile)
场景:上传图片、文档。
- 请求头:
Content-Type: multipart/form-data
Java
1 | @PostMapping("/upload") |
6. 获取请求头 (@RequestHeader)
场景:需要获取 Token 或客户端信息。
Java
1 | @GetMapping("/header") |
一个容易混淆的特例:Map 接收
有时候你不想定义一个 Java Bean (User 类),想偷懒直接用 Map 接数据:
接 JSON:必须加
@RequestBody。public void test(@RequestBody Map<String, Object> map)接普通表单:必须加
@RequestParam。public void test(@RequestParam Map<String, String> map)(如果你这里不加注解,Spring 无法判断你要把表单数据放入 Map,可能会得到空 Map)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 DuckLing's Blog!

