Другие виды 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.