TGViewer
Java Portal | Программирование Java Portal | Программирование @java_iibrary · 11.6K subscribers
Post #1828 2.26K
В Spring Boot ProductController нужно обработать два разных случая:

1. Вернуть простой 404 Not Found, если продукт не найден.

2. Вернуть 201 Created с динамическим заголовком Location при успешном создании.

Какие механизмы Spring вы бы использовали для реализации каждого из этих требований и почему?

Два основных способа управлять HTTP-ответом, отправляемым клиенту:

→ @ResponseStatus: простой статический вариант

- Можно навесить на исключение или метод контроллера.

- Всегда возвращает один и тот же HTTP-статус.

- Подход "fire-and-forget": быстро и лаконично в случаях, когда ответ всегда одинаковый.

- Лучше всего подходит для простой обработки ошибок. Например, ResourceNotFoundException, аннотированный @ResponseStatus(HttpStatus.NOT_FOUND), всегда будет возвращать 404.

- Нельзя добавить кастомные заголовки или динамическое тело ответа.

→ ResponseEntity: кастомный инструмент

- Даёт полный программный контроль над формированием HTTP-ответа во время выполнения.

- Можно выставить статус, добавить заголовки и собрать тело ответа так, как требуется по логике.

- Лучше всего подходит для сложных ответов. Например, когда нужно добавить заголовок Location после создания ресурса (201 Created) или вернуть детализированный JSON-объект с информацией об ошибке.

- Это основной инструмент, когда ответ должен зависеть от ситуации.

Комбинация подходов:

Используя @RestControllerAdvice для глобальной обработки исключений, можно применять @ResponseStatus для типовых ошибок, а ResponseEntity — для более специфичных и динамичных ответов. Такой подход даёт одновременно и эффективность, и гибкость.

👉 Java Portal
  • ❤ 6
  • 👍 6
More from @java_iibrary
  1. Sep 29, 2026Большинство Java-разработчиков используют эти термины каждый день. Удивительно, но многие…
  2. Sep 28, 2026💡 Java: не создавайте ресурсоёмкие объекты, пока они действительно не понадобятся. ✅ Иниц…
  3. Sep 28, 2026Проблема в продакшене. Приложение зависло. Вы запускаете: jstack <pid> Через несколько сек…
  4. Sep 27, 2026Java-разработчики, CopyOnWriteArrayList создаёт копию всего внутреннего массива при каждом…
  5. Sep 27, 2026Java-разработчики, ConcurrentHashMap потокобезопасен. Но он не блокирует всю коллекцию при…
  6. Sep 26, 2026Во многих приложениях есть такой эндпоинт. Фронтенд удаляет JWT после того, как пользовате…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →