Ответ
Формат тела 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, изображения).
Практические аспекты для тестирования:
- Парсинг и валидация: Ответ в формате JSON можно проверить на соответствие JSON Schema. XML можно валидировать по XSD.
- Извлечение данных: Для последующих запросов (например, токена аутентификации) нужно уметь извлекать значения из структуры ответа.
# Пример на Python с библиотекой requests response = requests.post(login_url, json=credentials) response_data = response.json() # Парсим JSON-ответ auth_token = response_data["access_token"] # Извлекаем токен - Проверка заголовка: Всегда проверяйте, что
Content-Typeв ответе соответствует ожидаемому и документации API. - Обработка ошибок: API может возвращать ошибки в том же формате, что и успешные ответы (например, JSON с полем
"error"), но с другим HTTP-статусом (4xx, 5xx).
Ответ 18+ 🔞
О, слушай, смотри, вот эта вся хуйня с Content-Type — это ж, блядь, как паспорт у ответа! Сервер такой: «Держи, мудила, твои данные», а в заголовке — инструкция, как это говно разворачивать. Если не глянуть — можно в лужу сесть, как тот Герасим с Муму, только вместо собаки у тебя в руках битый JSON окажется.
Ну вот, основные форматы, с которыми придётся бодаться:
-
application/json— это сейчас, блядь, хлеб и воздух для любого REST API. Всё в этих фигурных скобочках.{ "status": "success", "data": { "id": 789, "email": "user@example.com" } }Красота, всё понятно. Главное, чтобы кавычки не кривые были, а то смотри — «ёпта, валидатор взбесится!»
-
application/xml/text/xml— это уже, сука, старьё, но крепкое. SOAP, какие-то древние системы, которые ещё на COBOL, наверное, писаны. Говорит тебе: «Чувак, тут теги, блядь, учи».<response> <status>success</status> <id>789</id> </response>Вроде тоже норм, но объёмы, блядь, в три раза больше, чем в JSON! Трафик жрут, как не в себя.
-
text/html— это когда ты страницу запросил, а тебе всю эту разметку плюсом несут. Для API — редкость, но если прилетело, значит, ты где-то нихуя не туда стучишься, либо сервер сблевал. -
text/plain— простыня текста. Часто для каких-нибудь «OK» или «Internal Server Error, иди нахуй». Примитивно, но хоть читать можно. -
application/octet-streamи прочие бинарники — тут всё, пипец. Файлы качаются: ZIP'ы, PDF'ки, картинки. Глазами не проверишь — надо сохранять и смотреть.
А теперь, блядь, практика, где собака-то порылась:
-
Парсинг и валидация: С JSON'ом — красота, есть куча валидаторов и схемы (JSON Schema). Накинул схему — и сразу видно, где сервер накосячил и прислал
"id": "семьсот восемьдесят девять"вместо цифры. С XML — та же фигня, только XSD. Без этого — «доверия ебать ноль». -
Выковыривание данных: Это основа основ! Получил токен — вытащи его, сука, чтобы в следующий запрос воткнуть.
# Пример на Python с библиотекой requests response = requests.post(login_url, json=credentials) response_data = response.json() # Парсим JSON-ответ auth_token = response_data["access_token"] # Извлекаем токенСмотри, главное — не полезть в
response.json(), еслиContent-Typeнеapplication/json. А то «пидарас шерстяной, получишь исключение на ровном месте». -
Проверка заголовка: Это святое! Первым делом смотри, что в
Content-Typeпришло. Документация говорит — JSON, а тебеtext/htmlплюнули? Всё, «подозрение ебать чувствую», пошёл багрепорт писать. Сервер врёт, как сивый мерин. -
Обработка ошибок: Тут, блядь, важно не обосраться. Ошибка тоже может быть в JSON! Только статус HTTP будет не 200 OK, а, например, 400 Bad Request.
{ "error": "Invalid email format", "code": 42 }Надо проверять и статус, И содержимое! А то будешь как тот мудак, который на «404 Not Found» в теле HTML пытается
.json()вызвать — «в рот меня чих-пых, ну и идиот».
Короче, суть в чём: Content-Type — твой компас в этом море данных. Не туда посмотрел — и ты уже не тестировщик, а «мартышлюшка с клавиатурой». Всё проверяй, парсь осознанно, и будет тебе счастье.