1. 路径变量
用@PathVariable注解。
- 不是用于传递表单数据的,而是用于在 URL 路径中传递数据。例如:
/users/{userId}
。 - 用于获取 URL 中的动态部分,例如:
/users/123
,可以通过@PathVariable
注解在 Controller 方法中接收。 - 示例:
@GetMapping("/users/{userId}")
public User getUser(@PathVariable("userId") Long userId) {
// 使用 userId 查询用户
}
2. 查询参数(Key-Value)
用@RequestParam注解。
- 可以通过
@RequestParam
注解接收,通常用于 GET 请求中通过 URL 查询字符串传递的参数。 - 例如:
/search?name=John&age=25
。
示例:
@GetMapping("/search")
public List<User> searchUsers(@RequestParam("name") String name, @RequestParam("age") Integer age) {
// 根据 name 和 age 查询用户
}
2.1 可以省略的情况
@RequestParam
注解在接收 URL 中的查询参数或表单参数时使用。这个注解有时可以省略,但是否可以省略取决于以下几个条件:
2.1.1 参数名称与请求参数名一致
如果方法参数名与请求参数名一致,那么可以省略 @RequestParam
注解。这是因为 Spring 会自动将请求参数名与方法参数名匹配。
2.1.2 不需要指定其他属性
如果不需要指定 required
(是否为必填参数)、defaultValue
(默认值)等其他属性时,可以省略 @RequestParam
注解。
2.1.3 没有歧义
在没有歧义的情况下,省略 @RequestParam
是安全的。例如,当参数名清晰且不与路径变量冲突时。
3. JSON 数据
用@RequestBody注解。
-
请求体中的 JSON 数据:
- 通常用于 POST、PUT、PATCH 请求,数据被编码为
application/json
。 - JSON 数据在请求体中传递,可以通过
@RequestBody
注解接收。
示例:
- 通常用于 POST、PUT、PATCH 请求,数据被编码为
@PostMapping("/create")
public void createUser(@RequestBody User user) {
// 处理 JSON 数据,创建用户
}
4. 总结
4.1 常用的请求参数类型
4.1.1 json格式
application/json,传递json格式字符串,当传递的参数是属于一个对象的属性时可用此格式,比如:新增、修改时通常传递的数据是某个对象的信息就可以使用此格式。
4.1.2 表单格式
application/x-www-form-urlencoded,传递key/value串,就是在url后通过?和&进行拼接的参数,比如:
/foundations/operation/serve/page?pageNo=1&pageSize=10
当传递的参数比较杂且不属于某个特定的对象时使用此格式。
4.2 接收方式
路径变量中的数据用@PathVariable注解;
请求体中的json用@RequestBody注解;
key-value用@RequestParam注解,也可以省略。