Spring 数据 + Spring 引导:如果资源已更新则返回 200,如果资源已创建则返回 201
Spring data + Spring Boot: returning 200 if resource was updated or 201 if resource was created
我为用户实施了更新端点。
我想知道如何在创建用户时 return 201 状态和 200 如果刚刚使用 Spring 框架功能尽可能多地更新用户(不是自定义的东西)。
我有这个用户控制器:
@RequestMapping("users")
@RestController
public class UserController {
@Autowired
private UserService userService;
...
@PutMapping
public UserDTO update(@RequestBody User user) {
User updated = userService.update(user);
return updated;
}
}
此用户服务:
@Service
public class UserService {
@Autowired
UserRepository userRepository;
...
public User update(User user) {
return userRepository.save(user);
}
}
还有这个 UserRepository:
@Repository
public interface UserRepository extends MongoRepository<User, String> {
}
我知道 Spring Data Rest 直接公开了资源,但不是我要找的答案(不满足我的需求,因为我确实需要服务和存储库层)
使用 ResponseEntity<T>
,它允许您指定状态。
@PutMapping
public ResponseEntity<UserDTO> update(@RequestBody User user) {
User updated = userService.update(user);
return ResponseEntity.status(HttpStatus.OK).body(updated);
}
有关此方法的更多信息,请参阅 Baeldung article。
我为用户实施了更新端点。
我想知道如何在创建用户时 return 201 状态和 200 如果刚刚使用 Spring 框架功能尽可能多地更新用户(不是自定义的东西)。
我有这个用户控制器:
@RequestMapping("users")
@RestController
public class UserController {
@Autowired
private UserService userService;
...
@PutMapping
public UserDTO update(@RequestBody User user) {
User updated = userService.update(user);
return updated;
}
}
此用户服务:
@Service
public class UserService {
@Autowired
UserRepository userRepository;
...
public User update(User user) {
return userRepository.save(user);
}
}
还有这个 UserRepository:
@Repository
public interface UserRepository extends MongoRepository<User, String> {
}
我知道 Spring Data Rest 直接公开了资源,但不是我要找的答案(不满足我的需求,因为我确实需要服务和存储库层)
使用 ResponseEntity<T>
,它允许您指定状态。
@PutMapping
public ResponseEntity<UserDTO> update(@RequestBody User user) {
User updated = userService.update(user);
return ResponseEntity.status(HttpStatus.OK).body(updated);
}
有关此方法的更多信息,请参阅 Baeldung article。