JSON RPC - Простой способ вызывать удаленные процедуры
JSON-RPC (Remote Procedure Call) - это протокол, который позволяет клиентам вызывать удаленные процедуры или методы на сервере в формате JSON (JavaScript Object Notation).
Пример JSON-RPC запроса:
{
"jsonrpc": "2.0",
"method": "getUser",
"params": {
"id": 123
},
"id": 1
}
В данном примере мы вызываем метод "getUser" с параметром "id" равным 123.
Пример JSON-RPC ответа:
{
"jsonrpc": "2.0",
"result": {
"name": "John",
"age": 30
},
"id": 1
}
В данном примере мы получаем результат вызова метода "getUser", который возвращает объект с полями "name" и "age".
Рассмотрим пример реализации JSON-RPC на стороне сервера на языке Python с использованием библиотеки jsonrpcserver:
from jsonrpcserver import method
@method
def get_user(id):
# retrieve user data from database based on id
user_data = {"name": "John", "age": 30}
return user_data
Данная функция реализует метод "get_user", который принимает параметр "id" и возвращает данные пользователя в формате словаря.
Для того, чтобы запустить сервер, можно использовать следующий код:
from jsonrpcserver import serve
serve("0.0.0.0", 8000)
Данный код запустит сервер на IP-адресе 0.0.0.0 и порту 8000. Теперь клиенты могут вызывать метод "get_user" отправляя JSON-RPC запросы на указанный адрес и порт.
Рассмотрим пример JSON-RPC запроса от клиента на языке Python с использованием библиотеки jsonrpcclient:
from jsonrpcclient import request
response = request("http://localhost:8000", "get_user", id=123)
print(response)
Данный код отправляет JSON-RPC запрос на адрес http://localhost:8000 с методом "get_user" и параметром "id" равным 123. В результате мы получаем ответ от сервера, который можно распечатать на экране.
Таким образом, JSON-RPC позволяет упрощать вызов удаленных процедур или методов между клиентом и сервером в формате JSON, что может быть особенно удобным для разработки веб-сервисов.