这三个注解在 Spring MVC 中用于从 HTTP 请求中获取数据,但它们的作用对象和获取数据的方式略有不同。
1. @RequestParam
:
- 作用对象:方法参数
- 作用:用于从请求的查询字符串中提取参数值,并将其绑定到方法的参数上。
示例:
@GetMapping("/hello")
public String sayHello(@RequestParam("name") String name) {
return "Hello, " + name + "!";
}
在请求
GET /hello?name=John
时,将提取查询参数name
的值为John
,并将其绑定到sayHello
方法的name
参数上。
2. @RequestBody
:
- 作用对象:方法参数
- 作用:用于将 HTTP 请求体中的数据(如 JSON、XML 等)绑定到方法的参数上。
示例:
-
@PostMapping("/users") public ResponseEntity<User> createUser(@RequestBody User user) { // 处理接收到的用户数据 }
在请求
POST /users
时,将提取请求体中的数据,然后将其转换为User
对象,并将其绑定到createUser
方法的user
参数上。
3. @PathVariable
:
- 作用对象:方法参数
- 作用:用于从请求的 URL 路径中提取变量值,并将其绑定到方法的参数上。
示例:
@GetMapping("/users/{id}")
public ResponseEntity<User> getUserById(@PathVariable("id") Long id) {
// 根据用户ID获取用户信息
}
在请求
GET /users/123
时,将提取路径中的变量123
并将其绑定到getUserById
方法的id
参数上。
总的来说,@RequestParam
用于获取查询参数,@RequestBody
用于获取请求体数据,而 @PathVariable
用于获取 URL 路径中的变量值。