← Назад к вопросам

Из чего состоит структура API

2.0 Middle🔥 183 комментариев
#Тестирование API

Комментарии (3)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Структура API: детальный разбор

Структура API (Application Programming Interface) — это архитектурный каркас, который определяет, как различные программные компоненты взаимодействуют друг с другом. Она состоит из нескольких ключевых элементов, которые я разделю на логические блоки.

1. Протоколы и спецификации (Фундамент)

Это базовые правила и форматы, по которым происходит общение.

  • Протоколы: Чаще всего используется HTTP/HTTPS, но также возможны WebSocket (для real-time), gRPC (высокоскоростной бинарный), AMQP (для очередей).
  • Спецификации (архитектурные стили):
    *   **REST (Representational State Transfer):** Использует методы HTTP (GET, POST, PUT, DELETE) для операций с ресурсами, представляемыми как URL.
    *   **GraphQL:** Позволяет клиенту точно запрашивать нужные данные одним запросом, избегая over-fetching и under-fetching.
    *   **SOAP:** Стандартизированный протокол на базе XML, строгий и тяжеловесный, но с встроенной безопасностью.

2. Конечные точки (Endpoints) и методы

Это адреса, по которым клиент обращается к определенной функции API.

  • Базовый URL (Base URL): Общий корневой адрес сервиса (например, https://api.example.com/v1).
  • Путь (Path): Определяет конкретный ресурс или коллекцию.
    *   `/users` — коллекция пользователей.
    *   `/users/{id}` — конкретный пользователь.
  • HTTP-методы (или "Глаголы"): Действие над ресурсом.
    GET /api/products      # Получить список товаров
    POST /api/products     # Создать новый товар
    PUT /api/products/123  # Полностью обновить товар с id=123
    PATCH /api/products/123 # Частично обновить товар
    DELETE /api/products/123 # Удалить товар
    

3. Параметры запроса и данные

Детали, которые уточняют запрос.

  • Параметры пути (Path Parameters): Часть самого URL (/users/42).
  • Параметры строки запроса (Query Parameters): Добавляются после ? для фильтрации, сортировки, пагинации.
    GET /api/orders?status=shipped&limit=10&page=2
    
  • Тело запроса (Request Body): Данные, отправляемые для создания или обновления ресурса (обычно в формате JSON или XML).
    {
      "title": "Новый ноутбук",
      "price": 999.99,
      "inStock": true
    }
    
  • Заголовки (Headers): Метаданные запроса: тип контента (Content-Type: application/json), авторизация (Authorization: Bearer <token>), информация о клиенте (User-Agent).

4. Форматы данных

Как структурирована информация.

  • JSON (JavaScript Object Notation): Де-факто стандарт для современных REST/GraphQL API. Легковесный и человекочитаемый.
  • XML (eXtensible Markup Language): Часто встречается в SOAP и legacy-системах.
  • Form Data / Multipart: Для отправки файлов и данных форм.
  • Protobuf (Protocol Buffers): Бинарный, эффективный формат, используемый в gRPC.

5. Ответ API (Response)

Структура, которую возвращает сервер.

  • Коды состояния HTTP (Status Codes):
    *   `2xx` — Успех (200 OK, 201 Created).
    *   `3xx` — Перенаправление.
    *   `4xx` — Ошибка клиента (400 Bad Request, 401 Unauthorized, 404 Not Found).
    *   `5xx` — Ошибка сервера (500 Internal Server Error).
  • Тело ответа (Response Body): Запрашиваемые данные или описание ошибки (в JSON/XML).
    {
      "data": { "id": 1, "name": "John" },
      "error": { "code": "AUTH_FAILED", "message": "Invalid token" }
    }
    
  • Заголовки ответа (Response Headers): Метаданные от сервера: тип контента, кэширование (Cache-Control), лимиты (X-RateLimit-Limit).

6. Аутентификация и авторизация (Безопасность)

Механизмы контроля доступа.

  • API Key: Простой ключ, передаваемый в заголовке или параметре.
  • Bearer Token (JWT): Токен на основе OAuth 2.0, стандарт для делегирования доступа.
  • Basic Auth: Логин/пароль в кодировке Base64 (менее безопасно).
  • OAuth Flows: Authorization Code, Client Credentials, Implicit Grant — для разных сценариев.

7. Дополнительные компоненты (Экосистема)

  • Документация: Swagger/OpenAPI Specification — машиночитаемое описание всех эндпоинтов, параметров и моделей данных. Критически важна для разработчиков.
  • Версионирование: Указание версии API в URL (/v1/users) или заголовках для обратной совместимости.
  • Лимиты запросов (Rate Limiting): Ограничение числа вызовов от одного клиента для защиты от злоупотреблений.
  • Пагинация: Механизм разбивки больших списков данных на страницы (limit, offset, или cursor-based).
  • Фильтрация, сортировка, поиск: Параметры для работы с коллекциями данных.

С точки зрения QA Engineer, понимание этой структуры — основа для:

  • Проектирования тест-кейсов, покрывающих все компоненты (позитивные/негативные сценарии для эндпоинтов, проверка кодов ответа, валидация схемы JSON).
  • Использования правильных инструментов (Postman, SoapUI, готовые клиенты на Python с requests).
  • Тестирования безопасности (инъекции в параметры, валидация токенов, проверка лимитов).
  • Чтения и верификации контракта API по спецификации OpenAPI.
  • Тестирования производительности — нагрузка на конкретные эндпоинты.

Таким образом, структура API — это не просто "URL и JSON", а сложная, многоуровневая система, где каждый элемент требует внимания при тестировании для обеспечения надежности, безопасности и соответствия требованиям.

Из чего состоит структура API | PrepBro