Открыть сервис

REST

REST (от англ. Representational State Transfer — «передача репрезентативного состояния») — это архитектурный стиль взаимодействия компонентов распределённого приложения в сети, чаще всего применяемый при проектировании веб-сервисов (API). REST представляет собой набор соглашений и ограничений, а не протокол или стандарт; сервисы, соответствующие этим ограничениям, называют RESTful.

История и происхождение

Концепция REST была впервые сформулирована в 2000 году в докторской диссертации Роя Филдинга (Roy Fielding), одного из создателей протокола HTTP и спецификации URI. Филдинг проанализировал архитектуру Всемирной паутины и выделил ключевые принципы, которые обеспечили её масштабируемость, надёжность и производительность. Он предложил использовать эти принципы как основу для проектирования веб-сервисов, в противовес более сложным и менее гибким подходам, таким как SOAP (Simple Object Access Protocol) или CORBA (Common Object Request Broker Architecture).

До появления REST веб-сервисы часто строились на протоколах удалённого вызова процедур (RPC), которые требовали сложной настройки, специфических протоколов и тесной связи между клиентом и сервером. REST предложил более простую и универсальную альтернативу, основанную на стандартных возможностях HTTP.

Основные принципы и ограничения

REST определяет шесть архитектурных ограничений (constraints), которым должна следовать система, чтобы называться RESTful:

  1. Модель «клиент-сервер» (Client-Server). Отделение интерфейса пользователя (клиента) от хранилища данных (сервера) позволяет разрабатывать и модифицировать их независимо друг от друга, а также повышает масштабируемость серверной части.
  2. Отсутствие состояния (Stateless). Сервер не хранит информацию о состоянии клиента между запросами. Каждый запрос от клиента к серверу должен содержать всю информацию, необходимую для его обработки (например, данные аутентификации). Это упрощает сервер, повышает его надёжность и облегчает масштабирование.
  3. Кэширование (Cacheable). Ответы сервера должны явно или неявно указывать, могут ли они быть закэшированы клиентом или промежуточными прокси-серверами. Кэширование снижает нагрузку на сервер и уменьшает задержки для клиента.
  4. Единообразие интерфейса (Uniform Interface). Это ключевое ограничение, которое упрощает и делает прозрачной архитектуру. Оно включает четыре подограничения:
  1. Многоуровневая система (Layered System). Архитектура может состоять из нескольких уровней (например, балансировщики нагрузки, прокси-серверы, шлюзы). Клиент обычно не знает, взаимодействует ли он напрямую с конечным сервером или с промежуточным узлом. Это повышает масштабируемость и безопасность.
  2. Код по требованию (Code on Demand) (опционально). Сервер может временно расширять функциональность клиента, передавая ему исполняемый код (например, JavaScript-скрипты). Это единственное опциональное ограничение.

Ресурсы и методы HTTP

В контексте REST каждый элемент данных или функциональность рассматривается как ресурс. Ресурс может быть любым объектом, который имеет смысл в предметной области: пользователь, заказ, фотография, погода в городе на текущий момент.

Взаимодействие с ресурсами осуществляется с помощью стандартных методов HTTP, которые интерпретируются как операции CRUD (Create, Read, Update, Delete):

Пример работы REST API для управления книгами в библиотеке:

Форматы представления данных

REST не привязан к какому-то одному формату данных. Сервер может возвращать представление ресурса в любом формате, который поддерживает клиент. Наиболее популярными форматами являются:

Клиент обычно указывает желаемый формат в заголовке Accept, а сервер указывает фактический формат в заголовке Content-Type.

Преимущества и недостатки

Преимущества

Недостатки

Применение

REST является доминирующим архитектурным стилем для создания веб-сервисов и API. Он используется в подавляющем большинстве современных интернет-сервисов: социальные сети, облачные платформы, мобильные приложения, системы электронной коммерции, микросервисные архитектуры. Например, API таких крупных компаний, как Twitter (X), GitHub, Stripe, Amazon Web Services (AWS) и многих других, построены на принципах REST.

Критика и альтернативы

Несмотря на широкую распространённость, REST подвергается критике. Основные претензии связаны с проблемой избыточности запросов и отсутствием строгой контрактной системы. В ответ на эти недостатки появились альтернативные подходы:

Выбор между REST и альтернативами зависит от конкретных требований проекта: сложности запросов, требований к производительности, необходимости строгой типизации и т.д.

Источники

  1. Fielding, R. T. (2000). Architectural Styles and the Design of Network-based Software Architectures. Doctoral dissertation, University of California, Irvine.
  2. Fielding, R. T., & Taylor, R. N. (2002). Principled design of the modern Web architecture. ACM Transactions on Internet Technology (TOIT), 2(2), 115-150.
  3. Richardson, L., & Ruby, S. (2007). RESTful Web Services. O'Reilly Media.
  4. Webber, J., Parastatidis, S., & Robinson, I. (2010). REST in Practice: Hypermedia and Systems Architecture. O'Reilly Media.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →