HTTP-коды ответов делятся на 5 классов по первой цифре, определяющей категорию результата обработки запроса.
1xx — Информационные
| Код |
Название |
Описание |
| 100 |
Continue |
Сервер получил заголовки и клиент может продолжать отправку тела |
| 101 |
Switching Protocols |
Сервер переключает протокол (например, на WebSocket) |
2xx — Успешные
| Код |
Название |
Когда использовать |
| 200 |
OK |
Успешный GET, PUT, PATCH, DELETE |
| 201 |
Created |
Успешный POST, ресурс создан. Заголовок Location указывает URI нового ресурса |
| 202 |
Accepted |
Запрос принят, но обработка ещё не завершена (асинхронная операция) |
| 204 |
No Content |
Успешный запрос, тело ответа отсутствует (обычно DELETE или PUT) |
3xx — Перенаправления
| Код |
Название |
Когда использовать |
| 301 |
Moved Permanently |
Ресурс перемещён на постоянной основе |
| 302 |
Found |
Временное перенаправление |
| 304 |
Not Modified |
Ресурс не изменился с момента последнего запроса (кэширование) |
4xx — Ошибки клиента
| Код |
Название |
Когда использовать |
| 400 |
Bad Request |
Некорректный запрос (невалидный JSON, нарушение валидации) |
| 401 |
Unauthorized |
Не пройдена аутентификация (неверный или отсутствующий токен) |
| 403 |
Forbidden |
Аутентификация пройдена, но нет прав доступа (авторизация) |
| 404 |
Not Found |
Ресурс не найден |
| 405 |
Method Not Allowed |
HTTP-метод не поддерживается для данного URI |
| 409 |
Conflict |
Конфликт состояния (например, попытка создать дубликат) |
| 415 |
Unsupported Media Type |
Неподдерживаемый Content-Type |
| 422 |
Unprocessable Entity |
Запрос синтаксически верен, но семантически некорректен |
| 429 |
Too Many Requests |
Превышен лимит запросов (Rate Limiting) |
5xx — Ошибки сервера
| Код |
Название |
Когда использовать |
| 500 |
Internal Server Error |
Непредвиденная ошибка сервера |
| 502 |
Bad Gateway |
Некорректный ответ от вышестоящего сервера |
| 503 |
Service Unavailable |
Сервер временно недоступен (обслуживание, перегрузка) |
| 504 |
Gateway Timeout |
Вышестоящий сервер не ответил вовремя |
Типичное использование в REST API
Пример
POST /api/users → 201 Created
GET /api/users → 200 OK
GET /api/users/42 → 200 OK или 404 Not Found
PUT /api/users/42 → 200 OK или 204 No Content
PATCH /api/users/42 → 200 OK
DELETE /api/users/42 → 204 No Content
На собеседовании: достаточно знать ключевые коды: 200, 201, 204, 301, 304, 400, 401, 403, 404, 409, 429, 500, 503. Частая ошибка — путать 401 (аутентификация) и 403 (авторизация).