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

В чем разница между 204 и 404 статус-кодом?

1.6 Junior🔥 151 комментариев
#API и интеграции#Форматы данных и протоколы

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

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

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

Разница между статус-кодами 204 и 404

Это вопрос о HTTP статус-кодах, которые используются в REST API для указания результата запроса. Правильное использование этих кодов — важная часть проектирования удобного API.

Статус-код 204 No Content

Что это значит:

  • Запрос был успешно обработан
  • Сервер выполнил требуемое действие
  • Но в ответе нет тела сообщения (no content)

HTTP категория: 2xx (успех)

Когда его использовать:

  1. DELETE запрос
DELETE /api/v1/users/123
→ 204 No Content

Ресурс был удален, ничего возвращать не нужно.

  1. PUT/PATCH обновление
PUT /api/v1/users/123
→ 204 No Content

Ресурс обновлен, полные данные возвращать не требуется.

  1. Операция без результата
POST /api/v1/notifications/read
→ 204 No Content

Операция выполнена, но данные возвращать не нужно.

Особенности:

  • Тело ответа пусто
  • Content-Length: 0
  • Клиент знает, что операция выполнена успешно
  • Полезно для экономии трафика
  • Не содержит информации об ошибке

Статус-код 404 Not Found

Что это значит:

  • Запрашиваемый ресурс не найден на сервере
  • Сервер не может найти соответствующий запросу URL
  • Это ошибка клиента (неправильный URL или ресурс был удален)

HTTP категория: 4xx (ошибка клиента)

Когда его использовать:

  1. Ресурс не существует
GET /api/v1/users/999
→ 404 Not Found
{
  "error": "User with id 999 not found"
}
  1. Удаленный ресурс
GET /api/v1/posts/123
→ 404 Not Found
Пост был удален ранее
  1. Неправильный endpoint
GET /api/v1/usersss (опечатка)
→ 404 Not Found
Такого endpoint не существует

Особенности:

  • Обычно содержит тело с описанием ошибки
  • Указывает на проблему с URL или идентификатором
  • Клиент должен исправить свой запрос
  • Может кэшироваться браузером

Сравнительная таблица

Характеристика204 No Content404 Not Found
КатегорияУспех (2xx)Ошибка клиента (4xx)
ЗначениеУспешно, нет данныхРесурс не найден
Тело ответаПустоОбычно есть ошибка
Когда использоватьDELETE, успешная операцияРесурс не существует
Действие клиентаОперация выполненаИсправить запрос
КэшированиеОбычно нетЧасто кэшируется

Практические примеры

Сценарий 1: Удаление комментария

DELETE /api/v1/comments/456

Успех (комментарий найден и удален):
← 204 No Content

Ошибка (комментарий не найден):
← 404 Not Found
{
  "error": "Comment not found"
}

Сценарий 2: Обновление профиля

PATCH /api/v1/profile/avatar
body: { "avatar_url": "..." }

Успех:
← 204 No Content (avatar обновлен)
ИЛИ
← 200 OK (с полным профилем)

Ошибка (профиль не существует):
← 404 Not Found

Сценарий 3: Получение несуществующего ресурса

GET /api/v1/products/invalid-id

Это всегда 404:
← 404 Not Found
{
  "error": "Product not found",
  "product_id": "invalid-id"
}

Правила использования

Используй 204, если:

  • Операция выполнена успешно
  • Нет данных для возврата
  • Хочешь сэкономить трафик
  • Например: DELETE, отметить как прочитанное

Используй 404, если:

  • Ресурс по ID не существует
  • Эндпоинт не найден
  • Данные были удалены
  • Нужна обработка ошибки на клиенте

Смежные коды

200 OK — успех с телом ответа

GET /api/v1/users/123
← 200 OK
{ "id": 123, "name": "John" }

201 Created — ресурс создан

POST /api/v1/users
← 201 Created
{ "id": 124, "name": "Jane" }

410 Gone — ресурс был удален и больше не вернется

GET /api/v1/deprecated-endpoint
← 410 Gone

Лучшие практики

  1. Будь последователен — всегда используй одни и те же коды для одинаковых ситуаций
  2. Документируй — явно указывай возможные статус-коды в документации API
  3. Обрабатывай на клиенте — клиент должен правильно обрабатывать оба случая
  4. Предоставляй контекст — в теле 404 объясни, что именно не найдено

Правильное использование статус-кодов делает API предсказуемым и удобным для интеграции.