Что такое 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 API | WebSocket |
---|---|---|
Тип соединения | Кратковременное (запрос-ответ) | Постоянное |
Направление связи | Однонаправленное (запрос от клиента) | Двунаправленное |
Реактивность | Подходит для менее динамичных данных | Идеально для реального времени |
Простота реализации | Легко реализуется | Требует больше усилий |
Тип данных | Структурированный (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 для обновлений в реальном времени.