Назови признаки RESTful API

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

Ответ

Основные принципы (ограничения) RESTful архитектуры:

  1. Единообразие интерфейса (Uniform Interface):

    • Идентификация ресурсов: Каждый ресурс (пользователь, заказ) имеет уникальный URI (например, /api/users/123).
    • Манипуляция ресурсами через представления: Клиент взаимодействует с ресурсом через представление (например, JSON), которое сервер отправляет. Изменяя это представление и отправляя его обратно, клиент модифицирует ресурс.
    • Самодостаточные сообщения: Каждый запрос содержит всю информацию, необходимую для его обработки (метод, заголовки, тело).
    • HATEOAS (Hypermedia as the Engine of Application State): Ответы сервера содержат гиперссылки на возможные следующие действия (например, ссылка на создание нового заказа после получения списка товаров).
  2. Отсутствие состояния (Stateless): Сервер не хранит состояние клиента между запросами. Каждый запрос должен содержать всю необходимую аутентификационную и контекстную информацию (обычно в заголовках или токенах).

  3. Кэшируемость (Cacheable): Ответы сервера должны явно указывать, можно ли их кэшировать и как долго (через заголовки Cache-Control, Expires). Это критично для производительности.

  4. Клиент-серверная архитектура: Четкое разделение обязанностей. Клиент отвечает за UI и логику взаимодействия с пользователем, сервер — за хранение данных, бизнес-логику и управление ресурсами.

  5. Многоуровневая система (Layered System): Архитектура может состоять из нескольких уровней (прокси, балансировщики, шлюзы). Клиент не знает, подключен ли он напрямую к конечному серверу или через промежуточные узлы.

  6. Код по требованию (Code on Demand, опционально): Сервер может временно расширять функциональность клиента, передавая исполняемый код (например, JavaScript). На практике используется редко.

С точки зрения тестирования QA-инженер проверяет:

  • Корректное использование HTTP-методов (GET для получения, POST для создания, PUT/PATCH для обновления, DELETE для удаления).
  • Использование соответствующих HTTP-статусов (200 OK, 201 Created, 400 Bad Request, 404 Not Found, 500 Internal Server Error).
  • Структуру URI (логичность, отсутствие глаголов, использование существительных во множественном числе).
  • Формат обмена данными (обычно JSON или XML) и его соответствие контракту (OpenAPI/Swagger).
  • Отсутствие состояния (повторный идентичный запрос без сессии должен давать тот же результат).
  • Заголовки, отвечающие за кэширование и контроль доступа (CORS).