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