Ответ
REST API обычно используют форматы на основе текста для сериализации данных в теле HTTP-запросов и ответов.
Основные форматы:
-
JSON (JavaScript Object Notation) — де-факто стандарт.
- Почему: Легко читается и для человека, и для машины, компактный, имеет широкую поддержку во всех языках и фреймворках.
- Content-Type:
application/json. - Пример:
{ "id": 123, "name": "John Doe", "active": true }
-
XML (eXtensible Markup Language) — чаще встречается в legacy-системах или специфичных доменах (например, SOAP).
- Content-Type:
application/xmlилиtext/xml. - Пример:
<user> <id>123</id> <name>John Doe</name> <active>true</active> </user>
- Content-Type:
Реже, но также возможны:
- 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-запрос, чтобы на той стороне не охуели и поняли, что от них хотят.
Вот смотри, обычно всё крутится вокруг текстовых форматов. Не бинарных каких-нибудь, а именно текстовых, чтобы и машина схавала, и ты, криворукий, глянул в лог и не выпал в осадок.
Основные форматы, на которых всё держится:
-
JSON (JavaScript Object Notation) — это, блядь, царь и бог, де-факто стандарт такой, пиздец какой важный.
- А че он такой крутой? Да потому что читается на раз — и тобой, и кодом. Компактный, легковесный, и поддержка у него везде, от Java до какого-нибудь ебучего Python-скрипта. Просто овердохуища библиотек.
- Content-Type, который надо в заголовок тыкать:
application/json. - Как выглядит эта красота:
{ "id": 123, "name": "John Doe", "active": true }Красота же, ёпта? Всё понятно: id, имя, активен ли. Никакой ебли.
-
XML (eXtensible Markup Language) — это уже такой старый пердун, который до сих пор ползает по legacy-системам. Или в каких-нибудь ёбаных SOAP-сервисах, от которых волосы дыбом встают.
- Content-Type для него:
application/xmlилиtext/xml. - А выглядит он вот так, пизда с ушами:
<user> <id>123</id> <name>John Doe</name> <active>true</active> </user>Видишь, сколько лишних тегов? Тот же смысл, но букв в три раза больше. Зато «расширяемый», блядь. Ну его нахуй, в общем-то.
- Content-Type для него:
А ещё бывает, но реже:
- 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 поставил, а он уже там под капотом всё распарсил, ебать его в сраку. Удобно, чё.