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

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

Ответ

HTTP-запрос состоит из следующих обязательных и опциональных частей:

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

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

    • Host: example.com (обязательный в HTTP/1.1)
    • Content-Type: application/json
    • Authorization: Bearer <token>
    • User-Agent, Accept и др.
  3. Тело запроса (Body): Опционально. Содержит данные, например, для методов POST или PUT. Часто в формате JSON, XML или form-data.

Пример GET-запроса:

GET /api/users?role=admin HTTP/1.1
Host: api.example.com
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
Accept: application/json

Пример POST-запроса с телом:

POST /api/users HTTP/1.1
Host: api.example.com
Content-Type: application/json
Content-Length: 56

{
  "name": "Alice",
  "email": "alice@example.com"
}

Почему это важно: Понимание структуры необходимо для отладки, написания API-тестов, работы с инструментами (Charles, Postman) и анализа сетевого трафика.