Какие форматы могут использоваться для тела HTTP-запроса при тестировании API?

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

Ответ

При тестировании API тело запроса (payload) может быть представлено в различных форматах. Ключевой заголовок Content-Type указывает серверу, как интерпретировать данные.

Основные форматы тела запроса:

Формат (Content-Type) Описание Пример тела
application/json Наиболее популярен для REST API. Структурированный, удобочитаемый. {"user": "alice", "active": true}
application/x-www-form-urlencoded Пары "ключ=значение", разделенные &. Кодирует пробелы как + или %20. name=John+Doe&city=New+York
multipart/form-data Для отправки файлов и смешанных данных. Каждая часть имеет свои заголовки. (см. пример в ответе на вопрос 691)
application/xml / text/xml Структурированные данные в формате XML. <request><user>alice</user></request>
text/plain Простой неформатированный текст. This is a plain text payload.
Бинарные данные (например, image/png) Непосредственная передача файла (изображения, PDF и т.д.). [байты файла]

Почему это важно для тестировщика:

  1. Валидация: Сервер может отвергать запросы с неправильным Content-Type.
  2. Обработка ошибок: Нужно проверять, как API реагирует на неожиданные форматы (например, отправить XML в endpoint, ожидающий JSON).
  3. Инструменты: В Postman, Insomnia или скриптах (requests, curl) необходимо корректно задавать и заголовок, и тело.

Пример curl для отправки JSON:

curl -X POST https://api.example.com/items 
  -H "Content-Type: application/json" 
  -d '{"title": "Test Item"}'