К списку
HTTP, REST и APIMiddleТехническое

Структура HTTP-сообщения: компоненты и назначение

Краткий ответ

HTTP-сообщение состоит из стартовой строки, набора заголовков, пустой строки и тела сообщения. Стартовая строка определяет тип сообщения, заголовки содержат метаданные, а тело передаёт основное содержимое.

Развёрнуто

Краткий ответ

HTTP-сообщение включает стартовую строку, заголовки, пустую строку и тело. Стартовая строка указывает, является ли сообщение запросом или ответом, заголовки передают служебную информацию, а тело содержит данные, передаваемые клиентом или сервером.


Как это работает

HTTP-сообщение формируется из нескольких ключевых частей:

  • Стартовая строка — для запроса это строка с методом, URI и версией протокола (GET /index.html HTTP/1.1), для ответа — строка с версией протокола, кодом состояния и сообщением (HTTP/1.1 200 OK).
  • Заголовки — набор пар ключ-значение, которые передают метаданные, например Content-Type, Content-Length, Authorization.
  • Пустая строка — служит разделителем между заголовками и телом.
  • Тело сообщения — содержит полезную нагрузку, например HTML-код страницы, JSON-объект или файл.

Основная функция структуры — обеспечить корректный обмен данными между клиентом и сервером, где каждая часть играет определённую роль.

Компонент Описание
Стартовая строка Метод/статус + URI/код + версия протокола
Заголовки Метаданные, задающие параметры передачи
Пустая строка Разделитель между заголовками и телом
Тело Основное содержимое запроса или ответа

Пример

GET /api/users HTTP/1.1
Host: example.com
Accept: application/json

{"query": "active"}

В этом примере стартовая строка — GET /api/users HTTP/1.1, заголовки содержат информацию о хосте и формате, пустая строка отделяет заголовки от тела, а тело содержит JSON-запрос.

Что важно знать на собеседовании

  • Стартовая строка различается для запросов и ответов и задаёт основное направление HTTP-сообщения.
  • Заголовки обеспечивают обмен метаданными, влияя на поведение обработки сообщения.
  • Пустая строка обязательна для разделения заголовков и тела.
  • Тело сообщения необязательно и может отсутствовать, например в GET-запросах.
  • Понимание структуры важно для отладки и тестирования API на уровне протокола.

Тема: HTTP, REST и API | Уровень: middle