← Назад к вопросам

Какие знаешь HTTP статус-коды?

1.0 Junior🔥 31 комментариев
#Интеграции и API

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

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, который их понимает, работает эффективнее.

Какие знаешь HTTP статус-коды? | PrepBro