В каких форматах может быть тело ответа от HTTP-сервера?

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

Ответ

Формат тела HTTP-ответа определяется заголовком Content-Type в ответе сервера. Тестировщик должен уметь работать с основными форматами.

Распространенные форматы ответа:

  • application/json — стандарт для REST API.
    {
      "status": "success",
      "data": {
        "id": 789,
        "email": "user@example.com"
      }
    }
  • application/xml / text/xml — используется в SOAP и некоторых legacy-системах.
    <response>
        <status>success</status>
        <id>789</id>
    </response>
  • text/html — ответ веб-сервера при запросе страницы.
  • text/plain — простой текст, часто для статусных сообщений.
  • application/octet-stream или другие бинарные типы — для скачивания файлов (ZIP, PDF, изображения).

Практические аспекты для тестирования:

  1. Парсинг и валидация: Ответ в формате JSON можно проверить на соответствие JSON Schema. XML можно валидировать по XSD.
  2. Извлечение данных: Для последующих запросов (например, токена аутентификации) нужно уметь извлекать значения из структуры ответа.
    # Пример на Python с библиотекой requests
    response = requests.post(login_url, json=credentials)
    response_data = response.json() # Парсим JSON-ответ
    auth_token = response_data["access_token"] # Извлекаем токен
  3. Проверка заголовка: Всегда проверяйте, что Content-Type в ответе соответствует ожидаемому и документации API.
  4. Обработка ошибок: API может возвращать ошибки в том же формате, что и успешные ответы (например, JSON с полем "error"), но с другим HTTP-статусом (4xx, 5xx).