Что такое HTTP request (запрос)?

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

Ответ

HTTP request (запрос) — это структурированное сообщение, отправляемое клиентом (браузером, мобильным приложением, другим сервером) на сервер для выполнения операции над ресурсом. Запрос определяется методом, целевым URL, заголовками и опциональным телом.

Основные компоненты HTTP-запроса:

  1. Метод (HTTP Verb): Определяет действие.
    • GET — получение данных.
    • POST — создание нового ресурса.
    • PUT/PATCH — полное/частичное обновление.
    • DELETE — удаление ресурса.
  2. URL (Uniform Resource Locator): Адрес целевого ресурса.
  3. Заголовки (Headers): Метаданные запроса (например, Content-Type: application/json, Authorization: Bearer <token>).
  4. Тело (Body): Данные, отправляемые на сервер (обычно для POST, PUT).

Пример GET-запроса (Python, requests):

import requests
url = 'https://api.example.com/users/123'
headers = {'Authorization': 'Bearer eyJhbGciOi...'}
response = requests.get(url, headers=headers)

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

import requests
url = 'https://api.example.com/users'
data = {'name': 'Alice', 'email': 'alice@example.com'}
headers = {'Content-Type': 'application/json'}
response = requests.post(url, json=data, headers=headers)
# Библиотека requests автоматически устанавливает заголовок Content-Type и сериализует dict в JSON

Тестирование: При тестировании API проверяют корректность формирования всех компонентов запроса, валидацию входных данных, обработку ошибок и соответствие спецификации (например, OpenAPI/Swagger).