Перейти к содержимому

Архитектурный подход — REST API,

Что такое API

API — это комплекс методов и правил, по ним сервисы и программы работают друг с другом и передают сведения для выполнения запросов. Взаимодействие осуществляется с применением функций, классов, структур и протоколов.

API регламентирует, что и как будет передаваться между обеими сторонами.

Что такое REST API

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

Методы REST API

Для взаимодействия клиентской и серверной части обычно хватает четырёх основных методов REST API:

  • GET — взятие данных об объекте
  • POST — создание нового ресурса
  • PUT — изменение объекта. В основном метод применяют для обновления сведений
  • DELETE — удаление данных о ресурсе из базы

Для реализации сложных проектов разработчики иногда используют менее распространённые методы: LIST, UPDATE, PATCH и др.

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

В каких секторах используют REST API

Подход REST ограниченно внедряют в финансовый сектор. Это объясняется тем, что денежные транзакции требуют сбоя полного пакета обновлений, если возникнет ошибка на любом из этапов. Банки — консервативный бизнес, где к инновациям относятся с осторожностью. Они до сих пор придерживаются набора требований ACID (атомарность, согласованность, изоляция, устойчивость).

Из-за этого в банковском секторе более распространены решения, созданные на базе SOAP. Он имеет встроенный набор ACID, поэтому реализация необходимых модулей пройдёт быстро и с минимальными затратами.

Альтернативы REST API

Кроме этого подхода в разработке используют ещё пять альтернатив:

  • GraphQL — язык запросов и среда выполнения для программных интерфейсов. Он позволяет установить, какие сведения нужны клиентской части, и передавать только их.
  • gRPC — открытая технология удалённого вызова, использующая протокол HTTP/2 и тип сообщений Protocol Buffers для передачи информации между сервером и клиентским ПО.
  • SOAP — устаревший протокол обмена данными. Он работает с XML для описания содержания сообщений. Его особенность — высокий уровень защиты благодаря встроенным инструментам для контроля безопасности.
  • WebSocket — протокол для создания двустороннего взаимодействия между клиентом и серверной частью архитектуры. Системы, построенные на базе WebSocket, отправляют данные друг другу в режиме реального времени.
  • Server-Sent Events — технология, которую применяют для передачи клиентам потоковых данных в текстовом формате. Она стала популярна в нише стриминговых сервисов.

WebSocket

WebSocket — это протокол, обеспечивающий двунаправленную связь между клиентом и сервером в реальном времени.

Сравнение:

ХарактеристикаREST APIWebSocket
Тип соединенияКратковременное (запрос-ответ)Постоянное
Направление связиОднонаправленное (запрос от клиента)Двунаправленное
РеактивностьПодходит для менее динамичных данныхИдеально для реального времени
Простота реализацииЛегко реализуетсяТребует больше усилий
Тип данныхСтруктурированный (JSON, XML)Любой (текст, бинарные данные)

Когда использовать:

  • REST API подходит для систем с запросами по требованию, например, API для CRUD-операций или работы с базами данных.
  • WebSocket идеален для приложений, где требуется низкая задержка, например, чаты, стриминг, игры.

Если нужна гибкость, можно комбинировать оба подхода в одном приложении.

Для приложений, которые требуют мгновенной передачи данных или обмена информацией в реальном времени, REST API может быть не самым эффективным выбором. Альтернативой в таких случаях могут быть:

1. WebSocket

WebSocket — протокол для двунаправленной связи в реальном времени. После первоначального установления соединения через HTTP, клиент и сервер могут обмениваться данными без необходимости повторного создания соединений.

  • Преимущества:
    • Поддержка постоянного соединения.
    • Обмен данными в реальном времени (двунаправленный).
    • Снижение нагрузки на сеть благодаря отсутствию дополнительных накладных расходов на установление соединения.
  • Подходит для:
    • Онлайн-чаты.
    • Трейдинговые платформы.
    • Игры в реальном времени.
    • Уведомления и оповещения.

2. Server-Sent Events (SSE)

SSE — это технология, которая позволяет серверу отправлять обновления клиенту через однонаправленное соединение HTTP.

  • Преимущества:
    • Простая реализация.
    • Основана на стандартном HTTP, работает практически во всех современных браузерах.
    • Эффективна для передачи потоковых данных (например, обновлений).
  • Недостатки:
    • Однонаправленная связь (только сервер → клиент).
    • Подходит для приложений с меньшей потребностью в обратной связи.
  • Подходит для:
    • Ленты новостей.
    • Уведомления о событиях.
    • Обновление данных в реальном времени (например, биржевые котировки).

3. HTTP/2 с Server Push

HTTP/2 позволяет серверу инициировать отправку данных клиенту (server push), что частично решает проблему с односторонностью HTTP-запросов.

  • Преимущества:
    • Улучшенная производительность по сравнению с HTTP/1.1.
    • Возможность «проталкивать» ресурсы клиенту до его запроса.
  • Недостатки:
    • Менее распространённая реализация по сравнению с WebSocket.
    • Подходит для предзагрузки ресурсов, а не для обмена данными в реальном времени.

4. gRPC с двунаправленной потоковой передачей

gRPC — это фреймворк от Google, основанный на HTTP/2, который поддерживает потоковую передачу данных.

  • Преимущества:
    • Поддержка двунаправленного стриминга.
    • Высокая производительность и эффективность.
    • Меньший объём передаваемых данных по сравнению с JSON (использует Protocol Buffers).
  • Недостатки:
    • Требует дополнительных усилий для внедрения.
    • gRPC Менее универсален, чем REST API.
  • Подходит для:
    • Микросервисных архитектур.
    • Сложных систем с высокой интенсивностью обмена данными.

5. Long Polling

Это улучшенный вариант традиционного HTTP-запроса, где клиент делает запрос и сервер удерживает соединение, пока не появятся новые данные.

  • Преимущества:
    • Работает везде, где доступен HTTP.
    • Простая реализация.
  • Недостатки:
    • Высокая нагрузка на сервер из-за множества удерживаемых соединений.
    • Более высокая задержка, чем у WebSocket.
  • Подходит для:
    • Long Polling Простых приложений, где использование WebSocket невозможно. (Если требуется совместимость со старыми системами → Long Polling.)

Рекомендация

Если приложение требует мгновенной передачи данных, лучше всего использовать WebSocket. Однако выбор зависит от требований проекта. Например:

  • Если нужно двунаправленное взаимодействие → WebSocket или gRPC.
  • Если данные передаются только от сервера к клиенту → SSE.
  • Если требуется совместимость со старыми системами → Long Polling.

Объединение технологий также может быть полезным: например, использовать REST API для базовых операций и WebSocket для обновлений в реальном времени.

Добавить комментарий