Какие форматы тела запроса (Body) используются в REST API?

Ответ

В REST API наиболее распространены форматы JSON и, реже, XML. Выбор формата определяется API-контрактом.

1. JSON (application/json) — современный стандарт де-факто.

  • Преимущества: Легко читается, компактный, отлично поддерживается всеми языками программирования.
  • Пример тела запроса для создания пользователя:
    {
    "user": {
    "name": "John Doe",
    "email": "john@example.com",
    "isActive": true
    }
    }

2. XML (application/xml) — используется в legacy-системах или специфичных доменах.

  • Пример:
    <user>
    <name>John Doe</name>
    <email>john@example.com</email>
    <isActive>true</isActive>
    </user>

3. Другие форматы:

  • x-www-form-urlencoded — для отправки простых пар «ключ=значение», как в HTML-формах.
    • name=John+Doe&email=john%40example.com
  • multipart/form-data — обязателен для загрузки файлов вместе с другими данными.
  • Текстовые (text/plain) или бинарные данные — для специализированных случаев.

При тестировании важно:

  • Проверять, что API корректно принимает и парсит заявленный в документации формат.
  • Валидировать ответ сервера на неверный или поврежденный Content-Type.

Ответ 18+ 🔞

Да ты посмотри, какая хуйня творится в этих ваших REST API! Сидят, блядь, архитекторы, чешут репу и думают: "А в каком, сука, формате нам данные гонять?" И вариантов-то, внатуре, до охуища.

Вот, например, JSON (application/json) — это сейчас царь и бог, стандарт де-факто, ебать его в сраку. Все его любят, потому что он лёгкий, читаемый и любой язык его жрёт, как горячие пирожки. Вот смотри, как просто, блядь, пользователя создать:

{
  "user": {
    "name": "John Doe",
    "email": "john@example.com",
    "isActive": true
  }
}

Красота, ёпта! Ничего лишнего, всё по полочкам. А теперь смотри на его дедушку — XML (application/xml). Этот, блядь, ещё из тех времён, когда интернет на модеме пищал. Сейчас его только в легаси-системах встретишь, или где совсем ебнутые спецификации.

<user>
  <name>John Doe</name>
  <email>john@example.com</email>
  <isActive>true</isActive>
</user>

Видишь, сука, сколько лишних тегов нагородил? Целых три строчки на то, что JSON в одну упаковал. Пиздец просто, воды дохуя.

А ещё есть, блядь, форматы для совсем простых задач. Вот x-www-form-urlencoded — это когда тебе надо отправить данные, как из старой-доброй HTML-формы. Типа name=John+Doe&email=john%40example.com. Никаких тебе вложенностей, всё плоско, как доска.

Но самый, блядь, интересный зверь — это multipart/form-data. Его, сука, используют, когда вместе с текстом нужно файл прицепить. Картинку какую-нибудь или документ. Без него — никуда, иначе сервер тебя пошлёт нахуй с твоим бинарным мусором.

Ну и, конечно, бывают совсем специализированные случаи, когда гоняют просто текст (text/plain) или сырые бинарные данные. Но это уже для извращенцев, в рот меня чих-пых.

А теперь, сука, самое главное, когда тестируешь эту всю хуйню: Первое — надо проверить, что API не обосрётся, когда ты шлёшь ему данные в том формате, который в документации написан. А второе, и это овердохуища важно — обязательно завали его каким-нибудь левым или сломанным Content-Type. Посмотри, как он отреагирует: красиво ругнётся с ошибкой 415 или, как мудак, начнёт пытаться парсить твоё говно и упадёт с пятисотым статусом, обосрав все логи. Вот это и есть качественное тестирование, блядь!