1. 简单参数
-
用途:接收URL中的查询参数(如
/user?name=Tom&age=20)。 -
规则:
- 方法形参名与请求参数名一致时,自动绑定。
- 不一致时,使用
@RequestParam手动映射。
-
示例:
@GetMapping("/user") public String simpleParam( String name, // 形参名与请求参数名一致 @RequestParam("userAge") Integer age // 手动映射 ) { return "Name: " + name + ", Age: " + age; }
2. 实体参数(对象参数)
-
用途:将多个请求参数自动封装为实体对象。
-
规则:请求参数名需与实体类的属性名一致。
-
示例:
public class User { private String name; private Integer age; // Getter & Setter } @PostMapping("/user") public String entityParam(User user) { return "User: " + user.getName() + ", Age: " + user.getAge(); }- 请求示例:
POST /user?name=Tom&age=20
- 请求示例:
3. 数组/集合参数
-
用途:接收多个同名请求参数(如
hobbies=篮球&hobbies=游戏)。 -
规则:
- 数组:形参名与请求参数名一致。
- 集合:必须使用
@RequestParam绑定。
-
示例:
@GetMapping("/hobbies") public String collectionParam( String[] hobbies, // 数组 @RequestParam List<String> hobbyList // 集合 ) { return "Hobbies: " + Arrays.toString(hobbies) + ", List: " + hobbyList; }
4. 日期参数
-
用途:接收日期类型参数,需指定格式。
-
规则:使用
@DateTimeFormat(pattern="格式")注解。 -
示例:
@GetMapping("/date") public String dateParam( @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate date ) { return "Date: " + date; }- 请求示例:
GET /date?date=2023-10-01
- 请求示例:
5. JSON参数
-
用途:接收请求体中的JSON数据。
-
规则:使用
@RequestBody注解,自动反序列化为对象。 -
示例:
@PostMapping("/json") public String jsonParam(@RequestBody User user) { return "JSON User: " + user.getName(); }- 请求示例:
POST /json,请求体为{"name": "Tom", "age": 20}。
- 请求示例:
6. 路径参数
-
用途:从URL路径中提取参数(如
/user/1)。 -
规则:使用
@PathVariable注解。 -
示例:
@GetMapping("/user/{id}") public String pathParam(@PathVariable Integer id) { return "User ID: " + id; }
总结对比表
| 参数类型 | 适用场景 | 核心注解 | 示例请求格式 |
|---|---|---|---|
| 简单参数 | URL查询参数 | @RequestParam | /user?name=Tom |
| 实体参数 | 多字段对象封装 | 无 | /user?name=Tom&age=20 |
| 数组/集合 | 同名多值参数 | @RequestParam | /hobbies?hobbies=篮球&hobbies=游戏 |
| 日期参数 | 日期格式参数 | @DateTimeFormat | /date?date=2023-10-01 |
| JSON参数 | 请求体中的JSON数据 | @RequestBody | POST /json + JSON Body |
| 路径参数 | URL路径中的动态值 | @PathVariable | /user/1 |