> Что происходит, если по userId пользователь не найден? (Java)

Уровень: senior · Роль: backend · Язык: Java · Категория: Технические вопросы

Компании: Северсталь

Стек: Java

> Пример ответа

Если пользователь не найден по userId, в зависимости от контекста API, возможны два основных подхода:

  1. Возврат HTTP 404 (Not Found) - наиболее распространенный и REST-сообразный вариант. В контроллере выбрасывается исключение, например EntityNotFoundException, которое обрабатывается глобальным обработчиком (@ControllerAdvice) и возвращает клиенту JSON с сообщением об ошибке и статусом 404.

  2. Возврат пустого результата - если метод сервиса возвращает Optional<User>, то при отсутствии пользователя можно вернуть null или пустой Optional, а в контроллере - статус 204 (No Content) или пустое тело ответа. Этот подход менее информативен и используется реже, обычно в batch-операциях.

Пример реализации с 404:

JAVA
@GetMapping("/users/{id}")
public ResponseEntity<User> getUser(@PathVariable Long id) {
return userRepository.findById(id)
.map(ResponseEntity::ok)
.orElseThrow(() -> new EntityNotFoundException("User not found with id: " + id));
}

Глобальный обработчик:

JAVA
@ExceptionHandler(EntityNotFoundException.class)
public ResponseEntity<ErrorResponse> handleNotFound(EntityNotFoundException ex) {
return ResponseEntity.status(HttpStatus.NOT_FOUND)
.body(new ErrorResponse(ex.getMessage()));
}

Такой подход четко сигнализирует клиенту об ошибке и соответствует принципам REST.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью