Статьи

Стиль REST

Продолжая тему написания приложений с качественным кодом, разберемся сегодня в теме REST. Этот термин также является одним из наиболее популярных в современной веб-разработке. Но что же он значит?

Возьмем простое и понятное определение из поисковика:

REST — это набор правил того, как программисту организовать написание кода серверного приложения, чтобы все системы легко обменивались данными и приложение можно было масштабировать.

Кажется стало чуть понятней, но все еще малоинформативно. Копнем глубже?

Вот наше определение данного термина:

REST (Representational state transfer) — это архитектурный стиль написания API (интерфейса между клиентской и серверной стороной). Этот стиль тесно завязан на HTTP протоколе, так как идентификация действия определяется по HTTP-методу (GET, POST, UPDATE, DELETE). В свою очередь идентификация конечного ресурса определяется по URL-адресу.

А еще REST включает набор принципов:

  • Хранит данные клиента на стороне клиента
  • Является Stateless
  • Использует кэширование
  • Декларирует единообразие интерфейса (HTTP-методы, JSON/XML форматы данных)
  • Позволяет использовать слои: например, балансировщики нагрузки, кеширование, шифрование

Вот теперь становится яснее, при чем здесь качество кода. По своей сути REST — набор наиболее удачных практик для реализации современных клиент-серверных приложений. Плюс REST архитектуры в том, что ее API может быть легко задокументирован с помощью набора инструментов и спецификации OpenAPI, которая совместима с большинством современных веб-фреймворков. OpenAPI рассматривается как универсальный интерфейс для клиентов по взаимодействию с сервисами (серверами).

Примеры:

  • Redoc
  • Swagger

В современных веб-сервисах, построенных на REST, фронт приложения является фактически клиентской частью, в то время как бэк — серверной.

Но это не единственный способ использования данного стиля взаимодействия.

Межсервисные интеграции также могут быть реализованы на REST, большинство современных сервисов открыто предоставляют свой интеграционный API.

Вы можете связать свое веб-приложение с CRM-системой, S3 хранилищем, платежной системой, картами, социальной сетью, с другим своим веб-приложением и еще с кучей сервисов, и все это — используя под капотом REST API.

Выглядит как отличное и универсальное решение? Да, в определенных случаях. Но скрывает в себе и некоторые недостатки:

  • Недостаточная гибкость: ограничен набором операций (GET, POST, PUT, DELETE)
  • Неэффективность при обработке множества запросов: когда требуется выполнить множество последовательных запросов для получения большого объема данных.
  • Сложность разработки: если необходимо поддерживать множество операций и типов данных.
  • Неэффективность при работе с большими файлами: может привести к большим задержкам и нагрузке на сервер.

Здесь стоит упомянуть о брокерах сообщений, которые способны помочь в разрешении данных проблем, заменив REST API, но это оставим на следующий пост. И все же REST API является популярным и широко используемым стандартом веб-сервисов, который позволяет создавать эффективные и масштабируемые приложения. Изучайте плюсы и минусы REST, грамотно используйте его преимущества и будет вам счастье.
Основы программирования