Другие виды server-client API
Помимо классических HTTP-интерфейсов (REST, RPC), существуют и другие способы взаимодействия между клиентом и сервером. Они решают специфические задачи, такие как передача данных в реальном времени или эффективная работа с графами данных.
WebSocket
WebSocket — это протокол, обеспечивающий постоянное двустороннее соединение между клиентом и сервером поверх TCP. В отличие от HTTP, где каждое взаимодействие состоит из запроса и ответа, WebSocket позволяет обеим сторонам отправлять сообщения в любое время без необходимости устанавливать новое соединение.
Основное применение: чаты, онлайн-игры, биржевые котировки, совместное редактирование документов.
Особенность: требует отдельного серверного стека (не обрабатывается обычными REST-роутами).
Язык подключения: ws:// или wss:// (защищённый).
Server-Sent Events (SSE)
Server-Sent Events — это технология, при которой сервер может отправлять обновления клиенту по уже установленному HTTP-соединению. В отличие от WebSocket, SSE — это односторонний канал: данные идут только от сервера к клиенту.
Преимущества:
- Работает поверх стандартного HTTP/HTTPS
- Автоматически восстанавливает соединение при разрыве
- Поддерживается большинством браузеров
- Проще в реализации на сервере
Используется для уведомлений, лент событий, обновления статусов.
Клиентская часть в браузере: объект EventSource.
GraphQL
GraphQL — это язык запросов и среда выполнения, разработанная Facebook*. Вместо множества фиксированных эндпоинтов клиент отправляет запрос к одному URL, описывая точную структуру данных, которые ему нужны.
Преимущества:
- Клиент получает ровно то, что запрашивает (нет over-fetching или under-fetching)
- Документированность через интроспекцию
- Возможность агрегировать данные из нескольких источников
GraphQL может использовать как HTTP (для запросов и мутаций), так и WebSocket/SSE (для подписок на изменения).
*Признана в России очень плохой организацией
gRPC
gRPC — это высокопроизводительный RPC-фреймворк от Google, использующий HTTP/2 и Protocol Buffers в качестве формата сериализации. Он обеспечивает строгую типизацию и генерацию кода для клиента и сервера.
Применяется в микросервисных архитектурах, где важны скорость и надёжность.
Менее удобен для браузерных клиентов (требует прокси или WebAssembly), но хорошо подходит для мобильных приложений и backend-to-backend взаимодействий.
SOAP
SOAP (Simple Object Access Protocol) — старый протокол на основе XML, популярный в корпоративных системах 2000-х годов. Использует строгие схемы (WSDL) и поддерживает сложные функции: безопасность, транзакции, маршрутизация.
Сегодня почти не используется в мобильной и веб-разработке из-за громоздкости и сложности по сравнению с REST и JSON.