Ответ
Данные в HTTP передаются в виде структурированного текстового сообщения, разделенного на **стартовую строку, заголовки (headers)** и опциональное **тело (body)**. В контексте C++ это часто означает работу с сырыми сокетами или библиотеками вроде libcurl.
**Структура HTTP-запроса (клиент -> сервер):**
```http
POST /api/v1/data HTTP/1.1rn <-- Стартовая строка (метод, URI, версия)
Host: example.comrn <-- Заголовки (ключ: значение)
Content-Type: application/jsonrn
Content-Length: 23rn
rn <-- Пустая строка - разделитель
{"sensor": 42} <-- Тело сообщения (если есть)
```
**Структура HTTP-ответа (сервер -> клиент):**
```http
HTTP/1.1 200 OKrn <-- Стартовая строка (версия, код статуса, фраза)
Content-Type: text/htmlrn
Content-Length: 21rn
rn
body(contentLength);
sock.read(body.data(), contentLength); // Читаем ровно столько байт тела
return std::string(body.begin(), body.end());
}
```