Структура 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