Junior
44
questionbank

Что такое REST-ориентированная архитектура (ROA)?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

REST-ориентированная архитектура (Representational State Transfer) – это архитектурный стиль для распределенных систем, основанный на наборе принципов, определяющих, как ресурсы идентифицируются и как происходит взаимодействие между клиентом и сервером.

Основные принципы REST:

  1. Клиент-сервер (Client-Server): Разделение зон ответственности. Клиент заботится о пользовательском интерфейсе, сервер – о хранении и обработке данных.
  2. Отсутствие состояния (Stateless): Каждый запрос от клиента к серверу должен содержать всю необходимую информацию для его обработки. Сервер не хранит состояние клиента между запросами.
  3. Кэшируемость (Cacheable): Клиенты и промежуточные узлы могут кэшировать ответы сервера для повышения производительности и масштабируемости.
  4. Единообразный интерфейс (Uniform Interface):
    • Идентификация ресурсов (Identification of resources): Ресурсы однозначно идентифицируются через URL.
    • Манипуляция ресурсами через представления (Manipulation of resources through representations): Клиент может манипулировать ресурсами, используя представление ресурса (например, JSON, XML).
    • Самоописывающие сообщения (Self-descriptive messages): Каждое сообщение содержит достаточно информации, чтобы понять, как его обработать.
    • Управление состоянием приложения с помощью гипермедиа (Hypermedia as the Engine of Application State - HATEOAS): Клиент взаимодействует с приложением исключительно через гиперссылки, предоставленные в ответах сервера.
  5. Слоистая система (Layered System): Система может быть организована в слои (например, прокси, шлюзы), и каждый компонент видит только следующий слой, с которым он взаимодействует.
  6. Код по требованию (Code-On-Demand - опционально): Сервер может временно расширять функциональность клиента, передавая исполняемый код (например, JavaScript).

В QA, тестирование REST API включает проверку соответствия этим принципам, а также:

  • Функциональное тестирование (HTTP методы GET, POST, PUT, DELETE).
  • Нагрузочное тестирование.
  • Тестирование безопасности.
  • Тестирование на совместимость (различные форматы данных, клиенты).