Rostelecom Security Labs

HTTP Status Fundamentals

Контроллер возвращает 200 OK даже при ошибках. Найди строку с неправильным статусом и предложи корректное поведение API.

📚 Теория: HTTP статусы для REST (раскрыть)

Почему 200 != всегда успех?

API клиенты (SPA, мобильные, интеграции) зависят от статуса. Если вернуть 200 при ошибке, UI не покажет проблему, а мониторинг не заметит инцидент.

⚠️ 4xx для ошибок клиента, 5xx для ошибок сервера.

Как правильно?

Использовать ResponseEntity с нужным статусом, @ResponseStatus на исключениях, ProblemDetail и централизованные хендлеры.

🔐 Автотесты и curl должны видеть корректные статусы.

1. Запрос

Клиент спрашивает статус пользователя, которого нет в БД.

2. Ответ 200

Контроллер возвращает ResponseEntity.ok(error) — UI решает, что всё нормально.

3. Сбой

Проблема не фиксируется, SLA нарушен, мониторинг молчит.

Как надо: использовать 404 для отсутствующих ресурсов, 409/422 для конфликтов, 500 для неожиданных ошибок. Вводите контракт через OpenAPI и автотесты в Postman/Insomnia.

Контекст

Команда отключила централизованный error handler, чтобы «быстрее» выпустить фичу. Теперь контроллер сам конструирует ответы и случайно возвращает 200 OK с текстом ошибки. Нужно найти строку и описать, как привести API к стандартам.

Сниппет

Загружаем сниппет…

Code Review

Проверка флага

После ревью зафиксируй флаг, чтобы дашборд засчитал лабораторию.