ResponseEntity<T> cho phép kiểm soát hoàn toàn HTTP response: status code, header, body.
java
@PostMapping
ResponseEntity<User> create(@RequestBody @Valid CreateUserRequest req) {
User user = userService.create(req);
return ResponseEntity.created(URI.create("/api/users/" + user.getId())).body(user); // 201 + Location
}
@GetMapping("/{id}")
ResponseEntity<User> get(@PathVariable Long id) {
return userService.findById(id)
.map(ResponseEntity::ok) // 200 OK
.orElse(ResponseEntity.notFound().build()); // 404
}
@DeleteMapping("/{id}")
ResponseEntity<Void> delete(@PathVariable Long id) {
userService.delete(id);
return ResponseEntity.noContent().build(); // 204
}Trả object trực tiếp → Spring mặc định 200 OK.
Dùng ResponseEntity khi cần status khác 200, custom header, hoặc body có thể null.