Какие данные содержатся в HTTP-запросе?

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

Ответ

HTTP-запрос — это структурированное сообщение, состоящее из следующих частей:

  1. Стартовая строка: Содержит метод, путь и версию протокола.

    • Метод: GET, POST, PUT, DELETE, PATCH и др.
    • Путь (Path): URI целевого ресурса (например, /api/v1/users).
    • Версия протокола: HTTP/1.1 или HTTP/2.
  2. Заголовки (Headers): Метаданные запроса в формате Key: Value.

    • Host: example.com (обязательный в HTTP/1.1)
    • User-Agent: Mozilla/5.0...
    • Content-Type: application/json
    • Authorization: Bearer <token>
    • Cookie: sessionId=abc123
  3. Тело запроса (Body): Опциональные данные, обычно для методов POST, PUT. Может быть в формате JSON, XML, application/x-www-form-urlencoded или multipart/form-data.

Пример полного POST-запроса (например, для вызова API):

POST /api/deploy HTTP/1.1
Host: ci.company.com
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJ...

{
  "image": "myapp:v1.2",
  "environment": "staging"
}

При отладке пайплайнов или webhook'ов часто анализирую эти данные с помощью curl -v или инструментов вроде httpie.