@PathVariable和 @RequestBody一起用举个栗子
时间: 2024-08-15 18:07:58 浏览: 45
@PathVariable 和 @RequestBody 是Spring MVC框架中的两个常用的注解,用于处理HTTP请求的不同部分:
- `@PathVariable` 通常用于从URL路径变量中获取数据。当你需要从URL路径中提取特定的信息,比如动态路由的ID,可以使用这个注解。例如:
```java
@GetMapping("/users/{userId}")
public User getUser(@PathVariable Long userId) {
return userRepository.findById(userId).orElseThrow(() -> new ResourceNotFoundException("User not found"));
}
```
在这个例子中,`{userId}`将作为路径变量传递给`getUser`方法,并由`Long`类型的`userId`接收。
- `@RequestBody` 则用于从HTTP请求的身体(即POST、PUT等请求的数据体)中读取JSON或表单数据。当需要处理POST或PUT这样的HTTP方法,且内容包含实际的数据时,就使用它:
```java
@PostMapping("/create")
public ResponseEntity<?> createUser(@RequestBody UserCreateRequest request) {
User user = userService.createUser(request);
// 返回响应...
}
```
在这里,`@RequestBody UserCreateRequest request`会解析并存储来自客户端的`UserCreateRequest`对象。
结合使用示例:
```java
@PostMapping("/users/{userId}/update")
public ResponseEntity<?> updateUser(
@PathVariable Long userId,
@RequestBody UserUpdateRequest updateRequest
) {
user = userService.updateUser(userId, updateRequest);
if (user != null) {
return ResponseEntity.ok().build();
} else {
return ResponseEntity.notFound().build();
}
}
```
在这个更新用户操作的例子中,首先通过`@PathVariable`获取用户ID,然后通过`@RequestBody`获取要更新用户的详细信息。
阅读全文