Gernar
HTTP, API и сеть

Какие знаешь HTTP статус-коды

Разбор вопроса «Какие знаешь HTTP статус-коды» для Frontend Developer: что проверяет интервьюер, ключевые тезисы, практические примеры и частые ошибки.

Вопрос

Какие знаешь HTTP статус-коды

Профессия

Frontend Developer

Что хочет услышать интервьюер

Интервьюер хочет убедиться, что кандидат понимает систему HTTP статус-кодов, может объяснить их назначение и привести примеры из реального опыта. Также важно показать, как эти знания применяются в разработке (например, обработка ошибок).

Ключевые тезисы

  • HTTP статус-коды делятся на 5 групп: 1xx (информационные), 2xx (успех), 3xx (перенаправление), 4xx (ошибка клиента), 5xx (ошибка сервера).
  • Примеры популярных кодов: 200 (OK), 201 (Created), 400 (Bad Request), 401 (Unauthorized), 403 (Forbidden), 404 (Not Found), 500 (Internal Server Error).
  • Важно понимать разницу между похожими кодами, например, 401 (требуется аутентификация) и 403 (доступ запрещен).
  • Знание специфических кодов, таких как 429 (Too Many Requests) или 418 (I'm a teapot), может показать глубину знаний.

Подробный ответ

HTTP статус-коды используются для информирования клиента о результате выполнения запроса. Они делятся на пять групп: 1xx (информационные), 2xx (успех), 3xx (перенаправление), 4xx (ошибка клиента), 5xx (ошибка сервера). Каждая группа имеет свое назначение и помогает быстро понять, что произошло с запросом. Например, коды 2xx (например, 200 OK) указывают на успешное выполнение запроса, а коды 4xx (например, 404 Not Found) сигнализируют об ошибках на стороне клиента. Важно понимать разницу между похожими кодами, например, 401 (Unauthorized) означает, что запрос требует аутентификации, а 403 (Forbidden) — что доступ к ресурсу запрещен даже при успешной аутентификации. Знание специфических кодов, таких как 429 (Too Many Requests) или 418 (I'm a teapot), может показать глубину знаний и понимание стандартов HTTP.

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

Пример 1

Пример 1: Если пользователь отправляет запрос на создание нового ресурса (например, POST /api/users), успешный ответ должен содержать статус-код 201 (Created) и заголовок Location с URI созданного ресурса.

Пример 2

Пример 2: Если сервер не может обработать запрос из-за слишком большого количества запросов от одного клиента, он возвращает статус-код 429 (Too Many Requests) с указанием времени, через которое можно повторить запрос.

Пример 3

Пример 3: Если запрошенный ресурс не найден (например, GET /api/users/999), сервер возвращает статус-код 404 (Not Found), указывая на отсутствие ресурса.

Частые ошибки

  • Ошибка: Путаница между статус-кодами 401 (Unauthorized) и 403 (Forbidden). Кандидаты часто не понимают, что 401 требует аутентификации, а 403 запрещает доступ даже при ее наличии.
  • Ошибка: Использование статус-кода 500 (Internal Server Error) для всех ошибок сервера, включая ошибки, связанные с клиентом (например, неправильный ввод данных).

Связанные темы

  • RESTful API: Понимание HTTP статус-кодов важно для проектирования и работы с RESTful API.
  • HTTP методы: Знание статус-кодов тесно связано с пониманием HTTP методов (GET, POST, PUT, DELETE и т.д.).
  • Websocket: Хотя Websocket использует другой протокол, знание HTTP статус-кодов может быть полезно при установлении соединения.

Follow-up вопросы

Какой статус-код вернется, если страница не найдена?

Уровень: basic

Вернется статус-код 404 (Not Found). Это означает, что сервер не смог найти запрашиваемый ресурс.

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

Уровень: intermediate

401 (Unauthorized) означает, что запрос требует аутентификации, но она не предоставлена. 403 (Forbidden) означает, что сервер понял запрос, но отказывается его выполнять из-за ограничений доступа, даже если аутентификация пройдена.

Какой статус-код следует использовать при успешном создании ресурса?

Уровень: intermediate

Следует использовать статус-код 201 (Created). Он указывает, что запрос был успешно выполнен и в результате был создан новый ресурс.

Что означает статус-код 429 (Too Many Requests)?

Уровень: advanced

Статус-код 429 означает, что пользователь отправил слишком много запросов за короткий промежуток времени (rate limiting). Сервер может включить заголовок Retry-After, указывающий, через сколько можно повторить запрос.

Когда может пригодиться статус-код 418 (I'm a teapot)?

Уровень: advanced

Это шуточный статус-код из RFC 2324 (Hyper Text Coffee Pot Control Protocol). На практике он не используется, но может быть задействован в тестовых или демонстрационных целях для обработки нестандартных запросов.

Содержание