Из чего состоит API-запрос?

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

Ответ

API-запрос, особенно в контексте HTTP/HTTPS, состоит из следующих ключевых компонентов:

  1. Метод (HTTP Method): Определяет тип операции над ресурсом.

    • GET — получение данных.
    • POST — создание нового ресурса.
    • PUT — полное обновление ресурса.
    • PATCH — частичное обновление ресурса.
    • DELETE — удаление ресурса.
  2. URL (Endpoint/Uniform Resource Locator): Адрес целевого ресурса на сервере. Может включать путь и параметры.

  3. Заголовки (Headers): Метаданные запроса, описывающие клиент, формат данных, требования к кэшированию и аутентификацию.

    • Content-Type (например, application/json) — указывает формат тела запроса.
    • Authorization (например, Bearer <token>) — содержит учетные данные.
    • Accept — сообщает серверу, какой формат ответа предпочтителен.
  4. Параметры запроса (Query Parameters): Пары «ключ=значение», добавляемые в URL после ? для фильтрации, сортировки или пагинации (например, ?page=2&limit=10).

  5. Тело запроса (Request Body): Данные, отправляемые на сервер, обычно в методах POST, PUT, PATCH. Распространенные форматы:

    • JSON ({"name": "John"})
    • XML
    • Form-data
    • Plain text

Пример для тестировщика: При тестировании API я проверяю каждый компонент. Например, для негативного теста можно отправить POST-запрос с неверным Content-Type (например, text/plain вместо application/json) и убедиться, что сервер возвращает корректную ошибку 415 Unsupported Media Type.

# Пример валидного POST-запроса для создания пользователя
POST /api/v1/users HTTP/1.1
Host: api.example.com
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...

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