Ответ
Формат данных в теле POST-запроса определяется заголовком Content-Type. Основные форматы:
-
application/x-www-form-urlencoded- Что: Стандартный формат для HTML-форм. Данные кодируются в виде пар
ключ=значение, объединенных амперсандом&. - Пример тела:
username=johndoe&password=secret123 - Когда использовать: Простая отправка текстовых данных из форм.
- Что: Стандартный формат для HTML-форм. Данные кодируются в виде пар
-
multipart/form-data- Что: Используется для отправки бинарных данных, например, файлов. Тело разделяется на части (parts) границей (boundary).
-
Пример (упрощенно):
--boundary123 Content-Disposition: form-data; name="file"; filename="report.pdf" Content-Type: application/pdf [бинарное содержимое файла] --boundary123 Content-Disposition: form-data; name="description" Quarterly report --boundary123-- - Когда использовать: Загрузка файлов на сервер.
-
application/json- Что: Наиболее распространенный формат для современных RESTful API. Передает структурированные данные в формате JSON.
- Пример тела:
{"title": "New Post", "body": "Content here", "tags": ["tech", "api"]} - Когда использовать: Взаимодействие с JSON API.
-
text/plain,application/xml,text/html- Что: Специализированные форматы для передачи простого текста, XML или HTML-разметки.
Практический пример отправки JSON с помощью Python (библиотека requests):
import requests
url = "https://api.example.com/data"
data = {"key": "value"}
# Библиотека requests автоматически устанавливает заголовок Content-Type: application/json
response = requests.post(url, json=data)
# Или явно через параметр `data` и заголовки
response = requests.post(url, data=json.dumps(data), headers={"Content-Type": "application/json"})