Ответ
Ошибки клиента обозначаются статус-кодами класса 4xx. Сервер указывает, что проблема в запросе.
Основные коды:
- 400 Bad Request — неверный синтаксис запроса (например, некорректный JSON, невалидные параметры).
- 401 Unauthorized — требуется аутентификация (клиент не представил учетные данные).
- 403 Forbidden — доступ запрещён (клиент аутентифицирован, но не имеет прав).
- 404 Not Found — запрошенный ресурс не найден на сервере.
- 429 Too Many Requests — клиент превысил лимит запросов (rate limiting).
Пример ответа API с кодом 400:
HTTP/1.1 400 Bad Request
Content-Type: application/json
{
"error": {
"code": "VALIDATION_ERROR",
"message": "Missing required field: 'email'"
}
}
Почему это важно: Корректные 4xx коды помогают клиенту понять, как исправить запрос, в отличие от 5xx кодов, которые указывают на внутреннюю ошибку сервера.
Ответ 18+ 🔞
Ну слушай, давай разберём эту весёлую классификацию, когда сервер тебе вежливо намекает: "Чувак, это ты накосячил, а не я". Это вот эти самые 4xx коды, они все про клиентские косяки.
Представь, ты приходишь в банк и пытаешься снять деньги, тыкая в терминал палкой от швабры. Банк не сломается, он просто скажет: "Извините, но ваша операция не может быть выполнена". Вот это и есть 4xx.
Основные перлы, которые ты чаще всего встретишь:
- 400 Bad Request — это когда ты присылаешь серверу какую-то ахинею. Типа в поле "дата рождения" пишешь "вчера", а он ждёт
2023-12-31. Или JSON кривой, с запятой лишней. Сервер смотрит на это и думает: "Ну ты даёшь, блядь, это ж читать невозможно!". - 401 Unauthorized — "Предъяви документики". Ты просто пришёл, а тебя спрашивают логин-пароль или токен. Не предъявил — иди нахуй, кто ты такой?
- 403 Forbidden — вот это уже интереснее. Ты вроде свой, предъявил пропуск (токен), зашёл в здание. Но пытаешься открыть дверь в серверную с надписью "ТОЛЬКО ДЛЯ АДМИНОВ". Тебе вежливо, но твёрдо: "Сюда нельзя, дружок-пирожок". Доступ есть, а прав — нихуя.
- 404 Not Found — классика жанра, "страница не найдена". Ты просишь у сервера
/api/v1/unicorns, а он тебе: "Бля, ну нету у меня единорогов, все сбежали! Ищи в другом месте". Самый частый гость. - 429 Too Many Requests — "Успокойся, ебушки-воробушки!". Ты так задолбал сервер запросами, что он тебя на время блокирует. Rate limiting, ёпта. Не дрочи endpoint, как сумасшедший.
Вот, смотри, как выглядит вежливый, но уничижительный ответ, когда ты налажал с запросом:
HTTP/1.1 400 Bad Request
Content-Type: application/json
{
"error": {
"code": "VALIDATION_ERROR",
"message": "Missing required field: 'email'"
}
}
Перевод: "Чувак, ты забыл указать почту, волнение ебать. Исправь и приходи снова".
А в чём, собственно, соль? Важность в том, чтобы не путать эти коды с 5xx (ошибки сервера). Если прилетело 4xx — проблема у тебя, в твоём запросе или правах. Исправляй свой код и живи спокойно. Если же 5xx — это уже сервер обосрался, и тут ты мало что можешь сделать, кроме как материться и писать в саппорт. Чёткое разделение — залог ахуенного дебага и спокойной жизни.