Skip to main content

REST API и модель зрелости Ричардсона

Два стиля API

С точки зрения прикладного взаимодействия (без участия посредников вроде брокеров) все API можно разделить на два стиля:

  1. REST (Representational State Transfer).
  2. RPC (Remote Procedure Call).

REST (Representational State Transfer) — это архитектурный стиль взаимодействия компонентов в распределённой системе. В контексте API под REST обычно понимают набор принципов проектирования эндпоинтов, основанных на ресурсах и HTTP-глаголах.

Модель зрелости REST API (Richardson Maturity Model)

Image

Модель зрелости Ричардсона описывает четыре уровня (от 0 до 3), которые отражают, насколько API соответствует REST-принципам.

Уровень 0 (RPC-стиль)

  • Один endpoint на все команды.
  • Один глагол — почти всегда POST.
  • Что именно нужно сделать, указывается в теле запроса (JSON, XML и т. д.).

Фактически это не REST, а чистый RPC-стиль, просто завернутый в HTTP.

Уровень 1

  • Появляются разные endpoint'ы (разные пути для разных ресурсов).
  • Но глагол всё ещё один — обычно POST (или, в лучшем случае, GET для чтения и POST для всего остального).
  • Ресурсный подход (коллекции, отдельные объекты) уже может использоваться, но глаголы применяются некорректно.

Уровень 2 (канонический REST)

  • Корректное использование HTTP-глаголов: GET для чтения, POST для создания, PUT/PATCH для обновления, DELETE для удаления.
  • Правильное проектирование endpoint'ов: путь ведёт либо к коллекции (/users), либо к конкретному объекту (/users/42).
  • Это тот самый REST, который чаще всего имеют в виду на практике.

Уровень 3 (HATEOAS)

  • Добавляет в ответы ссылки (hypermedia), которые описывают возможные следующие действия.
  • В реальной практике практически не используется.

Что важно понимать про REST

  • REST — это не протокол, а архитектурный стиль (набор рекомендаций).
  • На практике «REST API» чаще всего означает Уровень 2 модели Ричардсона: правильные HTTP-глаголы и ресурсные эндпоинты.
  • REST не является серебряной пулей — для многих сценариев (особенно back-to-back и микросервисных) RPC-стиль может быть удобнее и эффективнее.