С какими форматами данных вы работали при использовании REST API?

Ответ

REST API обычно используют форматы на основе текста для сериализации данных в теле HTTP-запросов и ответов.

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

  1. JSON (JavaScript Object Notation)де-факто стандарт.

    • Почему: Легко читается и для человека, и для машины, компактный, имеет широкую поддержку во всех языках и фреймворках.
    • Content-Type: application/json.
    • Пример:
      {
      "id": 123,
      "name": "John Doe",
      "active": true
      }
  2. XML (eXtensible Markup Language) — чаще встречается в legacy-системах или специфичных доменах (например, SOAP).

    • Content-Type: application/xml или text/xml.
    • Пример:
      <user>
      <id>123</id>
      <name>John Doe</name>
      <active>true</active>
      </user>

Реже, но также возможны:

  • Form Data (application/x-www-form-urlencoded) — для отправки простых пар ключ-значение, обычно из HTML-форм.
  • Multipart Form Data (multipart/form-data) — для отправки бинарных файлов вместе с данными формы.
  • Текстовые форматы: YAML, Plain Text (text/plain).

На практике в современных Spring Boot приложениях JSON используется в 95% случаев, а конвертация в объекты Java (и наоборот) автоматически выполняется библиотеками, такими как Jackson.

Ответ 18+ 🔞

А, слушай, вот этот твой REST API, он же, блядь, не просто так в эфир пиздячит данные. Ему же надо как-то упаковать всю эту хуйню в HTTP-запрос, чтобы на той стороне не охуели и поняли, что от них хотят.

Вот смотри, обычно всё крутится вокруг текстовых форматов. Не бинарных каких-нибудь, а именно текстовых, чтобы и машина схавала, и ты, криворукий, глянул в лог и не выпал в осадок.

Основные форматы, на которых всё держится:

  1. JSON (JavaScript Object Notation) — это, блядь, царь и бог, де-факто стандарт такой, пиздец какой важный.

    • А че он такой крутой? Да потому что читается на раз — и тобой, и кодом. Компактный, легковесный, и поддержка у него везде, от Java до какого-нибудь ебучего Python-скрипта. Просто овердохуища библиотек.
    • Content-Type, который надо в заголовок тыкать: application/json.
    • Как выглядит эта красота:
      {
      "id": 123,
      "name": "John Doe",
      "active": true
      }

      Красота же, ёпта? Всё понятно: id, имя, активен ли. Никакой ебли.

  2. XML (eXtensible Markup Language) — это уже такой старый пердун, который до сих пор ползает по legacy-системам. Или в каких-нибудь ёбаных SOAP-сервисах, от которых волосы дыбом встают.

    • Content-Type для него: application/xml или text/xml.
    • А выглядит он вот так, пизда с ушами:
      <user>
      <id>123</id>
      <name>John Doe</name>
      <active>true</active>
      </user>

      Видишь, сколько лишних тегов? Тот же смысл, но букв в три раза больше. Зато «расширяемый», блядь. Ну его нахуй, в общем-то.

А ещё бывает, но реже:

  • Form Data (application/x-www-form-urlencoded) — когда тебе надо отправить простые парочки «ключ=значение», как из старой доброй HTML-формы. name=John&age=30.
  • Multipart Form Data (multipart/form-data) — вот это уже поинтереснее. Когда вместе с текстом надо отправить файл, картинку какую-нибудь. Тут уже разделители, границы — в общем, веселье.
  • Просто текст: YAML, Plain Text (text/plain). Ну, на любителя, конечно.

А на практике-то что? Да хуйня вопрос. В современных Spring Boot-приложениях JSON — это как воздух. В 95% случаев ты его и используешь. А вся эта магия превращения JSON'а в Java-объект и обратно — это за тебя делает Jackson, например. Ты просто аннотацию @RequestBody поставил, а он уже там под капотом всё распарсил, ебать его в сраку. Удобно, чё.