junior
Что такое ResponseEntity и когда его использовать?
ResponseEntity – класс-обёртка для полного контроля HTTP-ответа: статус-код, заголовки и тело.
Пример
@RestController
@RequestMapping("/api/users")
public class UserController {
@GetMapping("/{id}")
public ResponseEntity<UserDto> getUser(@PathVariable Long id) {
return userService.findById(id)
.map(ResponseEntity::ok) // 200 OK
.orElse(ResponseEntity.notFound().build()); // 404 Not Found
}
@PostMapping
public ResponseEntity<UserDto> createUser(@Valid @RequestBody CreateUserRequest request) {
UserDto created = userService.create(request);
URI location = URI.create("/api/users/" + created.getId());
return ResponseEntity.created(location).body(created); // 201 Created + Location
}
@DeleteMapping("/{id}")
public ResponseEntity<Void> deleteUser(@PathVariable Long id) {
userService.delete(id);
return ResponseEntity.noContent().build(); // 204 No Content
}
}
Распространённые статус-коды
Пример
ResponseEntity.ok(body); // 200
ResponseEntity.created(uri).body(body); // 201
ResponseEntity.noContent().build(); // 204
ResponseEntity.badRequest().body(errorDto); // 400
ResponseEntity.notFound().build(); // 404
ResponseEntity.status(HttpStatus.CONFLICT).body(e); // 409
Когда использовать
- Когда нужен статус-код, отличный от 200
- Когда нужно установить заголовки ответа
- Для POST-запросов (201 Created + Location header)
- Для условных ответов (200 или 404)
На собеседовании: покажите знание REST best practices (правильные HTTP-статусы для каждой операции). Частая ошибка – возвращать 200 OK с сообщением об ошибке в теле.