REST (Representational State Transfer): Клиент отправляет запросы (методы HTTP: GET, POST, PUT, DELETE) к ресурсам сервера, представленным URL. Сервер отвечает данными (обычно в JSON или XML). Состояние между запросами не сохраняется (stateless).
GraphQL: Альтернатива REST. Клиент запрашивает только те данные, которые ему нужны, в одном запросе. Сервер отвечает строго по запросу. Обеспечивает более эффективную передачу данных, особенно для приложений с комплексными требованиями к данным.
WebSockets: Полнодуплексное соединение между клиентом и сервером по одному TCP-соединению. Обе стороны могут отправлять данные в любое время без постоянного открытия/закрытия соединений. Идеально для приложений реального времени (чаты, онлайн-игры).
javascript
Server-Sent Events (SSE): Сервер отправляет потоковые обновления клиенту по одному HTTP-соединению. Клиент не может отправлять данные серверу по этому соединению, только получать. Полезно для однонаправленных уведомлений (например, обновления новостной ленты).
javascript
Polling: Клиент периодически отправляет запросы серверу для проверки обновлений. Простой, но неэффективный метод, так как большинство запросов могут не содержать новых данных.
Long Polling: Клиент отправляет запрос, и сервер удерживает соединение до тех пор, пока не появятся новые данные или не истечет таймаут. Как только данные отправлены или таймаут истек, клиент сразу же отправляет новый запрос. Более эффективен, чем обычный polling, но все еще может создавать нагрузку.
Сравнительная таблица:
| Метод | Направленность | Эффективность (данные реального времени) | Простота реализации (базовый уровень) |
|---|---|---|---|
| REST | Клиент -> Сервер | Низкая | Высокая |
| GraphQL | Клиент -> Сервер | Низкая | Средняя |
| WebSockets | Двунаправленная | Высокая | Средняя |
| SSE | Сервер -> Клиент | Высокая | Средняя |
| Polling | Клиент -> Сервер (часто) | Низкая | Высокая |
| Long Polling | Клиент -> Сервер (длительно) | Средняя | Средняя |