Собесов

К какому классу HTTP-ошибок относится «некорректный запрос»?

SQLHTTP-кодыЛёгкаяJunior

Условие

Вася считает себя хакером. Он отправил хитрый запрос на сервер, но тот вернул ему ошибку, что он что-то сделал не так — то есть запрос был не корректным. К какой группе ошибок будет относиться то, что вернул сервер? Обмен производится по HTTP.

  • 2**
  • 3**
  • 4**
  • 5**

Решение

Правильный ответ — 4xx.

4xx — класс ошибок на стороне клиента: клиент сформулировал запрос некорректно или у него нет прав. Среди них:

Код Имя Когда
400 Bad Request Запрос синтаксически некорректный (битый JSON, плохие параметры)
401 Unauthorized Нет/невалидный токен авторизации
403 Forbidden Авторизован, но нет прав на ресурс
404 Not Found Ресурса не существует
405 Method Not Allowed Метод (PUT/DELETE) не поддерживается на этом эндпоинте
409 Conflict Конфликт состояния (например, дубль уникального ключа)
422 Unprocessable Entity Синтаксис ок, но семантика невалидна
429 Too Many Requests Rate-limit

Все классы

Класс Что значит Примеры
1xx Информационные 100 Continue, 101 Switching Protocols
2xx Успех 200 OK, 201 Created, 204 No Content
3xx Перенаправление 301 Moved, 302 Found, 304 Not Modified
4xx Ошибка клиента 400, 401, 403, 404
5xx Ошибка сервера 500 Internal Server Error, 502 Bad Gateway, 503 Service Unavailable

В контексте задачи

«Хакер отправил хитрый запрос» — то есть запрос некорректный по форме или содержанию. Это вина клиента (или попытка атаки). Сервер отвечает 4xx:

  • 400 — если синтаксис кривой
  • 403 — если попытка обойти авторизацию
  • 422 — если данные не проходят валидацию

Подводные камни

  1. Считать 5xx ошибкой клиента. Нет: 5xx означает, что сервер не смог обработать корректный запрос (например, из-за бага в коде или БД). Если сервер падает на «хитром» запросе — это ещё и сигнал о баге.
  2. 404 vs 410. 404 — «не найдено» (ресурс может появиться). 410 Gone — «удалено навсегда».
  3. 401 vs 403. 401 — «не авторизован» (предъявите токен). 403 — «авторизован, но запрещено» (токен есть, прав нет).
  4. 200 OK с ошибкой в теле. Антипаттерн: некоторые API возвращают 200 с {"error": "..."}. Правильнее — соответствующий 4xx/5xx код.

Эталонный ответ

4xx — класс ошибок клиента. Конкретно для «некорректного запроса» — обычно 400 Bad Request.

Хочешь увидеть разбор?

Зарегистрируйся бесплатно — откроется развёрнутое решение этой задачи и ещё 4 на выбор.

Зарегистрироваться и увидеть разбор
Уже есть аккаунт? Войти