EnotPRO Logo EnotPRO

Коды статуса

HTTP-коды статуса — это трехзначные числа, которые сервер отправляет клиенту, чтобы сообщить результат обработки запроса. Это как "статус доставки" в службе доставки:

  • 200 — "Заказ доставлен успешно!"
  • 404 — "Адрес не найден"
  • 500 — "На складе проблемы"

Классификация по первым цифрам

1xx — Информационные (Informational)

"Я получил твой запрос, продолжаю работать..."

Код Название Значение
100 Continue "Продолжай, я готов принять тело запроса"
101 Switching Protocols "Переключаю протокол" (HTTP → WebSocket)
102 Processing "Обрабатываю, жди" (для долгих операций)
103 Early Hints "Вот предварительные данные"

Пример из жизни: Клиент отправляет большой файл. Сервер: "100 Continue" → "OK, отправляй дальше!"

2xx — Успех (Success)

"Всё прошло отлично, держи что хотел!"

Код Название Когда использовать
200 ✅ OK Стандартный ответ на успешные GET, POST, PUT
201 ✅ Created Ресурс успешно создан (после POST)
202 ✅ Accepted "Принял в обработку" (асинхронные задачи)
204 ✅ No Content Успешно, но без тела ответа (удаление)
206 ✅ Partial Content Частичный контент (для потоковой передачи)

Примеры:

http

200 — Получил данные пользователя

HTTP/1.1 200 OK Content-Type: application/json {"id": 1, "name": "John"}

201 — Создал новый заказ

HTTP/1.1 201 Created Location: /api/orders/123 # Где найти новый ресурс

204 — Удалил успешно (тела нет)

HTTP/1.1 204 No Content

3xx — Перенаправление (Redirection)

"Ищи не здесь, а там..."

Код Название Постоянность Сохраняет метод?
301 Moved Permanently Навсегда Обычно GET
302 Found Временно GET
303 See Other Всегда GET
307 Temporary Redirect Временно Сохраняет
308 Permanent Redirect Навсегда Сохраняет

Разница 301 vs 308:

301 — "Страница переехала навсегда, поисковики обновляют ссылки"

308 — "Переехала навсегда, И метод запроса сохрани (POST останется POST)"

Пример:

http HTTP/1.1 301 Moved Permanently Location: https://new-site.com/page

4xx — Ошибка клиента (Client Error)

"Ты что-то неправильно сделал..."

Код Название Причина
400 ❌ Bad Request "Не могу понять твой запрос" (синтаксис)
401 ❌ Unauthorized "Представься сначала" (нет аутентификации)
403 ❌ Forbidden "Я тебя знаю, но не пущу" (нет прав)
404 ❌ Not Found "Здесь ничего нет"
405 ❌ Method Not Allowed "GET можно, а POST — нет"
408 ❌ Request Timeout "Слишком долго думал, что отправить"
409 ❌ Conflict "Конфликт данных" (дубликат email)
429 ❌ Too Many Requests "Слишком много запросов, успокойся"

Важные различия

401 vs 403

  • 401 — "Кто ты?" (нет токена)
  • 403 — "Я знаю кто ты, но доступ закрыт"

400 vs 422

  • 400 — "Твой JSON сломан"
  • 422 — "JSON ок, но логика нарушена" (например, отрицательная цена)

Пример 404

  • http
  • HTTP/1.1 404 Not Found
  • Content-Type: text/html
Страница не найдена

5xx — Ошибка сервера (Server Error)

"У меня проблемы, это не твоя вина..."

Код Название Причина
500 🔥 Internal Server Error "Что-то пошло не так" (общая ошибка)
501 🔥 Not Implemented "Такой метод не поддерживаю"
502 🔥 Bad Gateway "Прокси получил фигню от другого сервера"
503 🔥 Service Unavailable "На обслуживании, зайдите позже"
504 🔥 Gateway Timeout "Прокси долго ждал ответа"

Разница 502 vs 504:

  • 502 — "Соседний сервер ответил ерундой"
  • 504 — "Соседний сервер вообще не ответил"

Примеры

В SEO

  • 301 — передает "SEO-силу" на новую страницу
  • 404 — говорит поисковикам "не индексируй"
  • 503 — "временно не работаю, но скоро вернусь"

🛠️ Как правильно выбирать код? Чек-лист для разработчика:

Успешные операции

  • Данные получены → 200
  • Создал новый ресурс → 201 + заголовок Location
  • Удалил/обновил без ответа → 204

Ошибки клиента

  • Неправильный запрос → 400
  • Нет авторизации → 401
  • Нет прав → 403
  • Не существует → 404
  • Слишком частые запросы → 429

Ошибки сервера

  • Непонятная ошибка → 500
  • База данных упала → 503
  • Завис внешний сервис → 502

Антипаттерны

  • ❌ Всегда возвращать 200, даже при ошибках
  • ❌ Возвращать 500 при ошибке валидации
  • ❌ Использовать 302 для постоянных редиректов
  • ❌ Возвращать 404 когда нужно 403 (раскрываем структуру)
© 2025 EnotPRO. Все права защищены.