Какие HTTP-статус коды указывают на ошибку сервера (5xx)?

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

Ответ

Коды состояния 5xx (Server Error) означают, что сервер не смог выполнить запрос по своей вине. Основные из них:

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

Практический пример проверки в автотесте (Python):

import requests

# Отправляем запрос к эндпоинту, который может упасть
response = requests.get("https://api.example.com/unstable-endpoint")

# Проверяем, что статус-код относится к ошибкам сервера
assert 500 <= response.status_code < 600, 
    f"Ожидалась ошибка 5xx, но получен {response.status_code}"

# Или проверяем конкретный код, например, 503
if response.status_code == 503:
    print("Сервер временно недоступен. Проверить Retry-After header.")