Что такое RPC и REST
RPC (Remote Procedure Call) и REST (Representational State Transfer) — это два различных подхода для взаимодействия между клиентом и сервером в распределённых системах. Оба они позволяют клиенту вызывать функции или получать данные с удалённого сервера, но работают по разным принципам.
RPC (Удалённый вызов процедур)
RPC — это метод, при котором клиентская программа вызывает процедуру (функцию или метод) на удалённом сервере, так, как если бы она вызывала её локально. Важная особенность RPC заключается в том, что интерфейс напоминает вызов процедур, то есть напрямую передаются параметры, и ожидается результат.
Основные характеристики RPC:
- Прямой вызов функций: клиент вызывает удалённую функцию как локальную.
- Протоколы: RPC может использовать различные протоколы для связи между клиентом и сервером. Примеры:
- gRPC (Google RPC) использует HTTP/2 и Protocol Buffers для передачи данных.
- JSON-RPC использует JSON для кодирования запросов и ответов.
- XML-RPC использует XML для передачи данных.
- Синхронный вызов: В большинстве случаев, клиент блокируется до тех пор, пока сервер не вернёт ответ.
Пример RPC-запроса (gRPC или JSON-RPC):
1 2 3 4 5 6 7 |
{ "jsonrpc": "2.0", "method": "add", "params": [4, 5], "id": 1 } |
1 2 3 4 5 6 |
{ "jsonrpc": "2.0", "result": 9, "id": 1 } |
Преимущества RPC:
- Удобство вызова функций, что делает его подходящим для распределённых систем.
- Может использовать эффективные протоколы передачи данных (например, Protocol Buffers).
Недостатки:
- Менее гибкий по сравнению с REST.
- Меньшая поддержка стандартизации, особенно для взаимодействия между разными технологиями.
REST (Representational State Transfer)
REST — это архитектурный стиль взаимодействия в распределённых системах, в котором сервер предоставляет ресурсы, а клиент обращается к этим ресурсам с помощью стандартных HTTP-запросов. Вместо вызова процедур клиент работает с ресурсами (данные или объекты) и использует стандартные методы HTTP для операций над ними.
Основные характеристики REST:
- Использование HTTP-протокола: запросы передаются с помощью стандартных методов HTTP:
- GET (получение данных),
- POST (создание ресурса),
- PUT (обновление ресурса),
- DELETE (удаление ресурса).
- Ресурсы: REST представляет все сущности в системе как ресурсы. Каждый ресурс имеет уникальный URI (например,
http://api.example.com/users/123
). - Статусы ответов: REST использует стандартные HTTP-коды статусов (например, 200 OK, 404 Not Found, 500 Internal Server Error).
- Форматы передачи данных: чаще всего REST API использует JSON или XML для передачи данных между клиентом и сервером.
Пример REST-запроса:
1 2 3 |
GET /users/123 HTTP/1.1 Host: api.example.com |
1 2 3 4 5 6 |
{ "id": 123, "name": "John Doe", "email": "john.doe@example.com" } |
Преимущества REST:
- Простота: основан на стандартах HTTP, что делает его простым в использовании и хорошо поддерживаемым.
- Гибкость: REST API может поддерживать множество типов данных (JSON, XML и др.).
- Легко кешируется: ответы на запросы можно кешировать, что улучшает производительность.
Недостатки:
- Может быть менее эффективен, чем RPC в плане передачи данных (в зависимости от объёма и формата данных).
- Более статический подход, требует больше запросов для сложных операций.
Основные отличия:
1 2 3 4 5 6 7 |
Критерий RPC REST Принцип Вызов удалённых функций (методов) Работа с ресурсами через HTTP-запросы Протоколы Разные протоколы: HTTP/2, JSON-RPC, gRPC, XML-RPC Основан на протоколе HTTP Передача данных Процедурные вызовы с параметрами и результатами Передача данных в формате ресурсов (JSON, XML) Методы Специфические для каждой API Использует стандартные HTTP-методы (GET, POST) Гибкость Более ограниченный и жёсткий Гибкий и стандартизированный |
Recommended Posts
Спецификация JSON:API 1.0 на русском языке
28.01.2022
Получение списка коммитов с Gitlab через API
21.11.2021