Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
HTTP Статус-коды: Практический справочник для Business Analyst
HTTP статус-коды — это язык, на котором общаются сервер и клиент. За 10+ лет я работал достаточно близко с разработчиками и фронтенд, чтобы понимать эти коды на уровне Business Analyst. Расскажу о самых важных и как я их использую в работе.
Структура HTTP Статус-кодов
Все коды разбиты на 5 категорий по первой цифре:
- 1xx (100-199) — Informational (информационные)
- 2xx (200-299) — Success (успешные)
- 3xx (300-399) — Redirection (перенаправление)
- 4xx (400-499) — Client Error (ошибка клиента)
- 5xx (500-599) — Server Error (ошибка сервера)
Категория 2xx: Успешные ответы
Это коды, когда всё прошло хорошо.
200 OK
Означает: Запрос успешен, сервер вернул данные, всё хорошо.
Когда видишь:
GET /api/users/123 → 200 OK
Content: { "id": 123, "name": "John" }
В контексте бизнеса:
- Пользователь делает любой запрос и получает данные → 200
- Это база всех API запросов
201 Created
Означает: Ресурс успешно создан.
Когда видишь:
POST /api/orders → 201 Created
Content: { "id": 999, "status": "pending", ... }
В контексте бизнеса:
- Пользователь создал заказ → сервер вернул 201, новый заказ в системе
- Это важно: 201 означает, что данные сохранены
204 No Content
Означает: Запрос успешен, но нет данных для возврата.
Когда видишь:
DELETE /api/users/123 → 204 No Content
(ничего не возвращается)
В контексте бизнеса:
- Пользователь удалил свой аккаунт → 204
- Пользователь обновил профиль → иногда 204 (profile обновлён, но данные старые, обновлять не нужно)
202 Accepted
Означает: Запрос принят для обработки, но результат будет позже (асинхронно).
Когда видишь:
POST /api/export → 202 Accepted
Content: { "job_id": "12345", "status": "processing" }
Позже можно проверить статус:
GET /api/export/12345 → 200 OK
Content: { "status": "done", "file": "export.csv" }
В контексте бизнеса:
- Пользователь нажал "Export 1M rows in Excel"
- Это долго, поэтому → 202 Accepted
- Пользователь видит "Processing...", может уходить
- Позже может скачать файл
Категория 3xx: Перенаправления
301 Moved Permanently
Означает: Ресурс переехал на новый URL, и клиент должен обновить bookmark.
Когда видишь:
GET /api/v1/users → 301 Moved Permanently
Location: /api/v2/users
В контексте бизнеса:
- Компания обновила API версию
- Старые клиенты перенаправляются на новый endpoint
- Это permanent, браузер/клиент запомнит
302 Found (Temporary Redirect)
Означает: Ресурс временно в другом месте.
Когда видишь:
GET /checkout → 302 Found
Location: /checkout-new
В контексте бизнеса:
- Компания тестирует новый checkout
- 50% пользователей на старый, 50% на новый (A/B тест)
- Временно, это не permanent
304 Not Modified
Означает: Данные не изменились с последнего запроса, используй кэш.
Когда видишь:
GET /api/products/123 (с If-Modified-Since header)
→ 304 Not Modified
(браузер использует старные данные из кэша)
В контексте бизнеса:
- Оптимизация: не переиспользуем интернет трафик
- Браузер не загружает те же данные дважды
- Экономим пропускную способность
307 Temporary Redirect
Означает: Похож на 302, но сохраняет метод запроса (POST остаётся POST).
Когда видишь:
POST /api/login → 307 Temporary Redirect
Location: /secure/login
Клиент делает POST на новый URL (не GET)
Категория 4xx: Ошибки клиента
Это ошибки, которые сделал пользователь/клиент.
400 Bad Request
Означает: Сервер не может обработать запрос из-за синтаксической ошибки в самом запросе.
Когда видишь:
POST /api/orders
Content: { "name": "John", "email": "invalid-email" }
→ 400 Bad Request
Message: "Email must be valid"
В контексте бизнеса:
- Пользователь заполнил форму неправильно
- Нужно показать error message и попросить исправить
401 Unauthorized
Означает: Запрос требует аутентификации. Пользователь не залогинен.
Когда видишь:
GET /api/my-profile → 401 Unauthorized
Message: "Please login first"
В контексте бизнеса:
- Пользователь пытается получить доступ к приватным данным без логина
- Нужно перенаправить на страницу логина
403 Forbidden
Означает: Пользователь залогинен, но не имеет прав доступа.
Когда видишь:
GET /api/admin/settings → 403 Forbidden
Message: "Only admins can access this"
Пользователь залогинен, но не админ
В контексте бизнеса:
- Юзер А не может видеть данные Юзера Б
- Юзер не может менять чужой заказ
- Это security feature, важно
404 Not Found
Означает: Ресурс не существует.
Когда видишь:
GET /api/products/999999 → 404 Not Found
Message: "Product not found"
В контексте бизнеса:
- Пользователь пытается открыть удалённый товар
- Пользователь пытается открыть несуществующий заказ
- Показываем "This item doesn't exist anymore"
409 Conflict
Означает: Запрос конфликтует с текущим состоянием ресурса.
Когда видишь:
POST /api/orders/123/cancel
(заказ уже был отменён)
→ 409 Conflict
Message: "Order is already cancelled"
В контексте бизнеса:
- Пользователь пытается отменить заказ, который уже отменён
- Пользователь пытается создать пользователя с email, который уже существует
- Нужно объяснить, что произошло
429 Too Many Requests
Означает: Пользователь превысил лимит запросов (rate limiting).
Когда видишь:
GET /api/search → 429 Too Many Requests
Retry-After: 60 (подождите 60 секунд)
В контексте бизнеса:
- Защита от abuse (спам, DDoS атаки)
- Защита от перегрузки сервера
- Показываем пользователю "Too many requests, try again in a minute"
Категория 5xx: Ошибки сервера
Это ошибки, которые произошли на сервере.
500 Internal Server Error
Означает: Непредвиденная ошибка на сервере. Разработчик должен проверить логи.
Когда видишь:
POST /api/orders → 500 Internal Server Error
Message: "Something went wrong, our team is investigating"
В контексте бизнеса:
- Это bad, что-то сломалось в коде
- Нужно срочно проверить логи
- Пользователю показываем "Something went wrong, please try again later"
Как я реагирую как BA:
- Если это часто происходит (много 500 errors) — это signal что нужна рефакторинг
- Спрашиваю CTO: что именно сломалось? какие логи?
- Может быть, это нужно добавить в roadmap (улучшение reliability)
502 Bad Gateway
Означает: Сервер получил invalid response от upstream сервера.
Когда видишь:
GET /api/data
(API сервер пытается получить данные из database)
Database не отвечает → 502 Bad Gateway
В контексте бизнеса:
- Проблема с интеграцией между сервисами
- Может быть, database down
- Пользователю: "Service temporarily unavailable, please try again"
503 Service Unavailable
Означает: Сервер перегружен или on maintenance.
Когда видишь:
GET /api/anything → 503 Service Unavailable
Retry-After: 3600 (сервис будет доступен через час)
В контексте бизнеса:
- Планируемый downtime для обновлений
- Или сервер перегружен (слишком много пользователей)
- Показываем: "We're performing maintenance, please come back later"
Как я использую знание HTTP кодов как BA
1. При обсуждении требований
Мой диалог с разработчиком:
- Я: "Когда пользователь пытается создать заказ с invalid data, что вернуть?"
- Dev: "Не знаю, может быть 400?"
- Я: "Да, 400 Bad Request. Фронт должна проверить и показать error message"
2. При проектировании API
Я документирую для каждого endpoint какие коды он может вернуть:
POST /api/orders
Success: 201 Created
Errors:
- 400 Bad Request (invalid input)
- 401 Unauthorized (not logged in)
- 402 Payment Required (payment declined)
- 429 Too Many Requests (rate limit exceeded)
3. При анализе проблем
Юзер говорит: "Я нажимаю на кнопку и ничего не происходит"
Я смотрю Network tab в DevTools и вижу:
- 500 error → проблема на сервере, нужна помощь CTO
- 404 error → API endpoint не существует, нужно проверить URL
- 401 error → пользователь не залогинен, нужно перенаправить на login
4. При обсуждении с фронтенд
Фронтенд спрашивает: "Что делать, если получим 403?"
Я отвечаю: "Это значит, что пользователь не имеет прав. Показать error: 'You don't have access to this resource'"
Таблица самых важных кодов
КОД | НАЗВАНИЕ | КОГДА | ЧТО ДЕЛАТЬ
────┼────────────────────┼─────────────────┼───────────────────────────────
200 | OK | Всегда успешно | Показать данные
201 | Created | Создан ресурс | Перенаправить на новый ресурс
400 | Bad Request | Ошибка клиента | Показать error validation
401 | Unauthorized | Не залогинен | Перенаправить на login
403 | Forbidden | Нет прав | Показать "Access denied"
404 | Not Found | Нет ресурса | Показать 404 page
429 | Too Many Requests | Лимит превышен | Показать "Try again later"
500 | Server Error | Ошибка сервера | Alert CTO, retry позже
503 | Unavailable | Maintenance | Показать "Service down"
Результат знания HTTP кодов
- Лучше общение с разработчиками (говорим на одном языке)
- Лучший дизайн API (я документирую все возможные коды)
- Лучше UX (знаю, как обрабатывать ошибки на фронте)
- Faster debugging (когда что-то сломалось, я читаю коды и быстро понимаю проблему)
HTTP коды — это базовый язык веба. Business Analyst, который их понимает, работает эффективнее.