Что такое HTTP статус-коды и их группы?

«Что такое HTTP статус-коды и их группы?» — вопрос из категории HTTP и веб-протоколы, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

HTTP статус-коды — это трёхзначные числовые коды в ответе сервера, которые указывают на результат обработки HTTP-запроса. Первая цифра определяет класс ответа.

Группы (классы) статус-кодов:

Класс Описание Примеры
1xx (Информационные) Запрос получен, процесс продолжается. Уведомление для клиента. 100 Continue, 101 Switching Protocols
2xx (Успешные) Запрос успешно обработан и понят сервером. 200 OK, 201 Created, 204 No Content
3xx (Перенаправления) Для завершения запроса требуются дальнейшие действия (часто — ещё один запрос). 301 Moved Permanently, 302 Found, 304 Not Modified
4xx (Ошибки клиента) Запрос содержит ошибку или не может быть выполнен сервером. Проблема на стороне клиента. 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found
5xx (Ошибки сервера) Сервер не смог выполнить корректный запрос из-за внутренней ошибки. 500 Internal Server Error, 502 Bad Gateway, 503 Service Unavailable

Практическое использование (Python с библиотекой requests):

import requests

response = requests.get('https://api.example.com/data')

# Проверка успешности запроса
if response.status_code == 200:
    data = response.json()
    print('Успех:', data)
elif response.status_code == 404:
    print('Ошибка: Ресурс не найден (404)')
elif response.status_code >= 500:
    print(f'Ошибка сервера: {response.status_code}')
else:
    print(f'Неожиданный статус: {response.status_code}')

# Удобный метод для проверки кодов 4xx/5xx
if response.ok:  # Эквивалентно 200 <= response.status_code < 400
    print('Запрос успешен')

Важность для тестирования: При тестировании API необходимо проверять не только успешные сценарии (2xx), но и корректность возвращаемых кодов ошибок (4xx, 5xx) для некорректных данных или отсутствующих прав.