@RequestParam
和 @PathVariable
都是Spring框架中的注解,它们用于将Web请求中的参数映射到控制器的方法参数上,但它们的用途和工作方式有所不同:
-
@PathVariable:
- 用于从URL模板中提取变量。
- 通常用于RESTful API设计中,可以捕获URL路径中的一部分作为参数。
- 例如,如果你有一个URL
/users/{userId}
,并且你想要获取userId
,你可以在控制器方法中使用@PathVariable
注解来获取这个值。
@GetMapping("/users/{userId}") public User getUser(@PathVariable String userId) { // 使用userId获取用户信息 }
-
@RequestParam:
- 用于将请求的查询参数(即URL中的
?
后面的部分)映射到控制器方法的参数上。 - 可以指定参数的默认值,如果请求中没有提供该参数,则使用默认值。
- 例如,如果你有一个URL
/users?name=John
,并且你想要获取查询参数name
,你可以使用@RequestParam
注解来获取这个值。
- 用于将请求的查询参数(即URL中的
@GetMapping("/users")
public List<User> getUsers(@RequestParam(value = "name", defaultValue = "John") String name) {
// 使用name作为查询条件获取用户列表
}
总结区别:
@PathVariable
用于从URL路径中提取参数。@RequestParam
用于从请求的查询字符串中提取参数。@PathVariable
通常与RESTful URL设计一起使用,而@RequestParam
更加灵活,可以用于任何需要从查询参数中获取数据的场景。