Ответ
Формат данных в HTTP-запросе определяется заголовком Content-Type. Основные форматы:
| Формат | MIME-тип | Использование | Пример тела запроса |
|---|---|---|---|
| JSON | application/json |
REST API, обмен структурированными данными. | {"user": {"name": "Alice", "id": 123}} |
| Form Data (URL-encoded) | application/x-www-form-urlencoded |
Отправка простых пар «ключ-значение» из HTML-форм. | username=alice&password=secret |
| Multipart Form Data | multipart/form-data |
Отправка файлов вместе с текстовыми полями. | (Содержит границы для разделения частей) |
| XML | application/xml, text/xml |
SOAP-сервисы, legacy системы. | <request><user>Alice</user></request> |
| Plain Text | text/plain |
Передача простого текста. | Hello, server! |
| Binary Data | application/octet-stream, image/png, etc. |
Загрузка файлов (изображений, PDF). | (Байтовый поток) |
Пример отправки JSON через curl:
curl -X POST https://api.example.com/users
-H "Content-Type: application/json"
-d '{"name": "Alice", "role": "developer"}'
Почему важен Content-Type: Сервер использует этот заголовок, чтобы правильно распарсить (parse) тело запроса. Неверный тип может привести к ошибке 415 Unsupported Media Type.
Ответ 18+ 🔞
А, слушай, вот это тема! Сидишь ты такой, пишешь свой API, а потом приходит какой-нибудь горе-разработчик и начинает слать тебе данные в таком формате, что у сервера глаза на лоб лезут. Всё упирается в одну простую, но архиважную хуйню — заголовок Content-Type. Без него сервер — как слепой кот в подвале: ты ему в миску суёшь то вискас, то доширак, а он нихуя не понимает, что делать.
Вот смотри, основные форматы, с которыми ты столкнёшься:
| Формат | MIME-тип | Когда юзать | Пример тела |
|---|---|---|---|
| JSON | application/json |
Почти везде, блядь. REST API, мобилки, фронтенд — царь и бог. | {"user": {"name": "Alice", "id": 123}} |
| Form Data (URL-encoded) | application/x-www-form-urlencoded |
Старые-добрые HTML-формы. Простые парочки «ключ=значение». | username=alice&password=secret |
| Multipart Form Data | multipart/form-data |
Когда нужно отправить файл. Картинку, документ, порноролик — что угодно, вместе с текстом. | (Там своя магия с границами, boundary) |
| XML | application/xml, text/xml |
Для дедов, которые до сих пор на SOAP сидят. Легаси системы, ёпта. | <request><user>Alice</user></request> |
| Plain Text | text/plain |
Ну, просто текст. «Привет, сервак, как дела?». | Hello, server! |
| Binary Data | application/octet-stream, image/png и т.д. |
Чистые байты. Картинка, PDF, ебучий исполняемый файл. | (Поток байтов, нихуя не понятно) |
Вот тебе живой пример, как отправить JSON через curl, чтобы не выглядеть конченым идиотом:
curl -X POST https://api.example.com/users
-H "Content-Type: application/json"
-d '{"name": "Alice", "role": "developer"}'
Видишь этот -H "Content-Type: application/json"? Это и есть волшебный пинок под серверный зад, который сообщает: «Эй, дружок-пирожок, я тебе сейчас подсуну данные в формате JSON, будь добр, распарсь их правильно, а не как попало».
А теперь, блядь, главное: если ты этот заголовок забудешь или поставишь ерунду (например, отправишь JSON, а в Content-Type укажешь text/plain), сервер может просто послать тебя нахуй с ошибкой 415 Unsupported Media Type. Мол, «я такое не жую, иди отсюда». И будет прав, потому что он не телепат, ёпта! Он должен понимать, как разобрать твою кашу. Так что не будь мудаком — всегда указывай тип контента. Всё просто, как три копейки.