Ответ
Важно различать протоколы, которые используют HTTP как транспорт, и архитектурные стили, которые определяют, как с помощью HTTP взаимодействовать.
Архитектурные стили и подходы:
-
REST (Representational State Transfer) — это не протокол, а архитектурный стиль для построения распределенных систем. Он использует стандартные методы HTTP (
GET
,POST
,PUT
,DELETE
) для операций над ресурсами, идентифицируемыми по URI.// Пример GET-запроса к REST API resp, err := http.Get("https://api.example.com/users/123")
-
GraphQL — это язык запросов для API и среда выполнения для обработки этих запросов. Позволяет клиенту запрашивать строго определенный набор данных в одном запросе, решая проблему избыточной или недостаточной выборки данных, характерную для REST.
// Пример GraphQL-запроса query GetUser { user(id: "1") { name email } }
Протоколы:
-
WebSocket — протокол, работающий поверх TCP, который обеспечивает постоянное двунаправленное соединение между клиентом и сервером. Изначальный handshake (рукопожатие) происходит по HTTP/1.1 с помощью заголовка
Upgrade
, после чего соединение "повышается" до WebSocket.// Пример подключения по WebSocket conn, _, err := websocket.DefaultDialer.Dial("ws://example.com/ws", nil)
-
gRPC — высокопроизводительный RPC-фреймворк от Google. Использует HTTP/2 в качестве транспорта и Protocol Buffers для сериализации данных. Обеспечивает строгую типизацию, потоковую передачу данных и высокую эффективность.
// Пример подключения клиента gRPC conn, err := grpc.Dial("localhost:50051", grpc.WithInsecure())
-
WebDAV (Web Distributed Authoring and Versioning) — набор расширений к протоколу HTTP, который позволяет пользователям совместно редактировать и управлять файлами на удаленных веб-серверах.