Из каких основных частей состоит структура HTTP-запроса?

«Из каких основных частей состоит структура HTTP-запроса?» — вопрос из категории Сети, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

  1. Стартовая строка (Request Line)

    • Метод (HTTP Method): Определяет действие (GET, POST, PUT, DELETE, PATCH и др.).
    • Путь к ресурсу (Request Target): URL-путь (и опционально query-параметры).
    • Версия HTTP (HTTP Version): Например, HTTP/1.1 или HTTP/2.
      GET /api/users?active=true HTTP/1.1
  2. Заголовки (Headers)

    • Метаданные запроса в формате Имя: Значение. Каждый заголовок — на новой строке.
    • Определяют клиента, тип контента, кодировку, куки, авторизацию и т.д.
      Host: api.example.com
      User-Agent: Mozilla/5.0
      Content-Type: application/json
      Authorization: Bearer <token>
  3. Тело запроса (Request Body)

    • Опциональная часть. Используется для передачи данных серверу (в методах POST, PUT, PATCH).
    • Формат данных указывается в заголовке Content-Type.
      {
      "username": "johndoe",
      "email": "john@example.com"
      }

Важно: Для GET и HEAD запросов тело обычно отсутствует, а параметры передаются в URL (query string). Запрос завершается пустой строкой (CRLF), отделяющей заголовки от тела.