Ответ
Нет, тело HTTP-запроса присутствует не всегда. Его наличие определяется методом запроса и семантикой операции.
Методы без тела (обычно):
- GET — запрашивает данные, тело не используется.
- HEAD — аналогичен GET, но возвращает только заголовки.
- DELETE — может не иметь тела, если ресурс идентифицируется URL.
- OPTIONS — запрашивает поддерживаемые методы.
Методы с телом (часто):
- POST — отправляет данные для создания ресурса.
- PUT — отправляет данные для полного обновления ресурса.
- PATCH — отправляет данные для частичного обновления.
Примеры:
Запрос GET без тела:
GET /api/users HTTP/1.1
Host: example.com
Accept: application/json
Запрос POST с телом в формате JSON:
POST /api/users HTTP/1.1
Host: example.com
Content-Type: application/json
Content-Length: 27
{"name": "John", "age": 30}
Почему это важно: Клиенты и серверы оптимизируют обработку, не ожидая тело там, где оно не предусмотрено спецификацией.