Главная · Статьи · HTTP-коды ошибок

HTTP-коды ошибок: 400, 401 и 403, 404, 409, 500 — шпаргалка

Вячеслав Степанов Вячеслав Степанов — проджект-менеджер, ментор ·

«Фронт получает 403», «на оплате сыплется 502», «после релиза пошли пятисотые» — так в IT-команде описывают проблемы. Проджект-менеджеру не нужно чинить ошибки самому, но по одному коду он должен понять, что случилось и к кому идти. Ниже — шпаргалка по кодам, которые встречаются в работе, разница между 401 и 403, которую путают даже на собеседованиях, и то, как проджект использует коды каждый день. Видео-версия — мой открытый урок, где мы проверяем API в Postman и видим эти коды вживую.

Postman и интеграционное тестирование с нуля | Урок 24

Если видео не открывается — смотри на YouTube (может понадобиться VPN).

Содержание
  1. Что такое HTTP-код ответа
  2. Шпаргалка: коды, которые встречаются в работе
  3. Чем 401 отличается от 403
  4. 400, 422 и 409: что не так с запросом
  5. 500, 502, 503 и 504: что сломалось на сервере
  6. Где увидеть код ответа
  7. Как проджект использует коды
  8. Типичные ошибки
  9. Частые вопросы

Что такое HTTP-код ответа

Когда браузер или приложение обращается к серверу, сервер всегда возвращает код ответа — три цифры, по которым сразу видно итог: получилось, ошиблись в запросе или что-то упало. Вместе с кодом обычно приходят и данные, но код читают первым. Как вообще устроены запросы между фронтендом и бэкендом, я разбирал в статье про API.

Значения кодов закреплены в стандарте протокола HTTP — сейчас это RFC 9110, принятый в 2022 году. Поэтому 404 значит одно и то же на любом сайте мира.

Инфографика: пять групп HTTP-кодов — 1xx подожди, 2xx получилось, 3xx иди туда, 4xx ошибся клиент, 5xx сломался сервер
По первой цифре понятно, в какую сторону копать, ещё до чтения подробностей.

Группы 1xx и 3xx проджекту почти не встречаются: первая — служебная, вторая отвечает за перенаправление на другой адрес, и браузер обрабатывает её сам. В работе важны три остальные.

Шпаргалка: коды, которые встречаются в работе

КодПростыми словамиПример
200 OKВсё получилосьСписок учеников загрузился
201 CreatedЗапись созданаНовый ученик сохранён
204 No ContentПолучилось, но в ответе нечего показатьЗапись удалена
400 Bad RequestЗапрос составлен неверноВместо числа пришёл текст
401 UnauthorizedНе вошёл в системуИстекла сессия
403 ForbiddenВошёл, но нет правПопытка открыть чужого ученика
404 Not FoundТакого нетУченика с таким номером не существует
409 ConflictКонфликт с текущим состояниемНапоминание сегодня уже отправляли
422 Unprocessable ContentФормат верный, но данные не проходят проверкуУченик без обязательного email
429 Too Many RequestsСлишком много запросов подрядСработало ограничение частоты
500 Internal Server ErrorВнутренняя ошибка сервераОшибка в коде, упала база
502 Bad GatewayСервер-посредник получил плохой ответНе отвечает внешний сервис
503 Service UnavailableСервис временно недоступенПерегрузка или технические работы
504 Gateway TimeoutПосредник не дождался ответаТяжёлый запрос выполнялся слишком долго

Есть и шуточный код — 418 I’m a teapot, «я чайник». Его придумали как первоапрельскую шутку в RFC 2324 в 1998 году. Иногда о нём спрашивают на собеседованиях, чтобы разрядить обстановку.

Чем 401 отличается от 403

Инфографика: 401 — «Покажите пропуск», пользователь не вошёл в систему; 403 — «Вам на этот этаж нельзя», вошёл, но нет прав
Самая частая путаница среди кодов — и частый вопрос на собеседовании.

Путаница идёт из названия: 401 официально называется Unauthorized, «не авторизован», хотя по смыслу речь про аутентификацию — система не знает, кто ты. Поэтому лекарство от 401 — войти заново. С 403 вход не поможет: система тебя узнала, но решила, что этого действия тебе нельзя. Тут нужны права, а их выдаёт администратор или правила продукта.

Две практические оговорки. Некоторые системы на запрос без входа отвечают 403 вместо 401 — так настроены отдельные фреймворки, и в учебном продукте нашего курса запрос без токена тоже возвращает 403. А иногда сервер нарочно отвечает 404 вместо 403, чтобы не выдавать сам факт, что чужая запись существует. Если код ведёт себя не по учебнику, сверяйся с документацией API своей команды.

400, 422 и 409: что не так с запросом

Какой код в какой ситуации отдавать, команда договаривается заранее и записывает в системной аналитике по фиче: для каждого эндпоинта — список ошибок и текст, который увидит пользователь.

Хочешь научиться проверять API своими руками?
На менторстве ты собираешь коллекцию запросов в Postman для продукта в тренажёре IT-компании, ловишь коды ошибок и описываешь их в системной аналитике — с обратной связью по каждому шагу. Начни с бесплатной консультации.

Записаться на бесплатную консультацию

500, 502, 503 и 504: что сломалось на сервере

Инфографика: путь запроса браузер — шлюз — наш сервер — чужой сервис; 500 и 503 возникают на нашем сервере, 502 и 504 — на шлюзе
По коду видно, на каком участке цепочки искать причину.

Запрос редко идёт напрямую. Обычно между браузером и сервером стоит посредник — шлюз или балансировщик, а сам сервер может обращаться к чужим сервисам: банку, Telegram, почте. 5xx-код подсказывает, на каком звене цепочки проблема.

500 — повод сразу звать бэкенд: упал наш код или база. 503 часто временный — сервис перегружен или идут технические работы. 502 и 504 стоит проверять вместе с DevOps: виноват может быть как наш сервер, так и внешний сервис. Если 5xx посыпались после релиза, это кандидат на разбор на ретро и быстрый откат.

Где увидеть код ответа

Как проджект использует коды

Типичные ошибки

Частые вопросы

Чем ошибка 401 отличается от 403?

401 значит, что система не знает, кто ты: нужно войти. 403 значит, что система тебя узнала, но прав на это действие нет: повторный вход не поможет.

Что значит ошибка 500?

Внутренняя ошибка сервера: упал код или база данных. Со стороны пользователя исправить её нельзя — нужна команда бэкенда.

Что значит ошибка 404?

Запрошенного нет: страница удалена, адрес набран с ошибкой или записи с таким номером не существует.

Что такое 502 Bad Gateway?

Сервер-посредник (шлюз) получил плохой ответ от следующего сервера в цепочке — нашего или внешнего сервиса. Проверяют вместе бэкенд и DevOps.

Код 200 — значит, всё точно хорошо?

Значит, что сервер принял запрос и ответил без ошибки. Сделал ли он именно то, что нужно, проверяют отдельно — например, повторным чтением данных.

Читайте также
  1. Что такое API простыми словами
  2. Роли в IT-команде: кто есть кто и за что отвечает
  3. Что такое Jira и Confluence: гайд для новичка

Проверить себя в деле прямо сейчас?
Пройди путь проджекта в нашей игре — от книг до оффера и зарплатной гонки.

Играть в «Путь проджекта!»