Какие HTTP статус-коды ты знаешь и для чего они используются?

«Какие HTTP статус-коды ты знаешь и для чего они используются?» — вопрос из категории HTTP и веб-протоколы, который задают на 31% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

HTTP статус-коды — это трехзначные числа, которые сервер возвращает в ответ на клиентский запрос. Они сгруппированы по первым цифрам (классам). Знание этих кодов критически важно для тестирования API и веб-приложений.

Основные классы и ключевые коды:

  • 1xx (Информационные): Уведомления. На практике встречаются редко.

    • 100 Continue — сервер готов принять тело запроса.
  • 2xx (Успешные): Запрос успешно обработан.

    • 200 OK — стандартный ответ для успешных GET, PUT, PATCH запросов.
    • 201 Created — ресурс успешно создан (ответ на POST).
    • 204 No Content — запрос выполнен, но тело ответа пустое (например, после успешного DELETE).
  • 3xx (Перенаправления): Требуется дополнительное действие от клиента.

    • 301 Moved Permanently — ресурс навсегда перемещен на новый URL.
    • 302 Found (или 307 Temporary Redirect) — ресурс временно доступен по другому адресу.
    • 304 Not Modified — контент не изменился с момента последнего запроса (используется для кеширования).
  • 4xx (Ошибки клиента): Проблема на стороне запроса.

    • 400 Bad Request — сервер не понял запрос из-за неверного синтаксиса (например, невалидный JSON).
    • 401 Unauthorized — требуется аутентификация (клиент не представился).
    • 403 Forbidden — доступ запрещен (клиент аутентифицирован, но прав недостаточно).
    • 404 Not Found — ресурс не найден по указанному URL.
    • 429 Too Many Requests — клиент отправил слишком много запросов за короткое время (rate limiting).
  • 5xx (Ошибки сервера): Проблема на стороне сервера.

    • 500 Internal Server Error — общая ошибка сервера без конкретики.
    • 502 Bad Gateway — сервер, выступая в роли шлюза, получил невалидный ответ от вышестоящего сервера.
    • 503 Service Unavailable — сервер временно не может обработать запрос (перегрузка, техобслуживание).
    • 504 Gateway Timeout — сервер-шлюз не дождался ответа от вышестоящего сервера.

Для тестировщика: Проверка корректности возвращаемых статус-кодов — обязательная часть тестирования API. Например, при попытке удалить несуществующий ресурс должен вернуться 404, а не 500.