JSON-RPC 2.0

JSON-RPC 2.0 是一种基于 JSON 数据格式的远程过程调用协议(Remote Procedure Call Protocol,RPC)。简单来说,它允许一个程序通过网络请求另一个程序执行某个"函数",然后返回结果。

你可以把它理解成:

"通过发送一段 JSON,让远程服务器帮你执行一个方法。"

它常用于区块链节点通信、钱包接口、微服务、后台 API 等场景。


1. RPC 是什么?

RPC 的核心思想是:

传统调用:

python 复制代码
result = calculate(1, 2)

你的程序直接调用本地函数。

RPC:

复制代码
客户端  ----请求---->  服务器

"请帮我执行 calculate(1,2)"

客户端  <----返回----  

"结果是3"

调用者感觉像调用本地函数,但实际上函数运行在另一台机器上。


2. JSON-RPC 2.0 的基本结构

一次请求通常长这样:

json 复制代码
{
  "jsonrpc": "2.0",
  "method": "subtract",
  "params": [42, 23],
  "id": 1
}

字段解释:

字段 作用
jsonrpc 协议版本,固定写 "2.0"
method 要调用的方法名
params 传递给方法的参数
id 请求编号,用于匹配响应

比如:

意思是:

请服务器执行 subtract(42,23)


服务器返回:

json 复制代码
{
  "jsonrpc": "2.0",
  "result": 19,
  "id": 1
}

表示:

执行成功,结果是 19


3. 如果出错呢?

例如调用不存在的方法:

请求:

json 复制代码
{
  "jsonrpc": "2.0",
  "method": "hello",
  "id": 1
}

返回:

json 复制代码
{
  "jsonrpc": "2.0",
  "error": {
    "code": -32601,
    "message": "Method not found"
  },
  "id": 1
}

错误结构:

json 复制代码
error:
{
    code,
    message,
    data
}

4. JSON-RPC 和 REST API 的区别

很多 Web API 使用 REST:

例如:

复制代码
GET /users/123

意思:

获取用户123

JSON-RPC:

json 复制代码
{
 "jsonrpc":"2.0",
 "method":"getUser",
 "params":[123],
 "id":1
}

意思:

调用 getUser 方法

区别:

REST JSON-RPC
思想 资源操作 调用函数
路径 多个 URL 通常一个接口
方式 GET/POST/PUT POST为主
格式 多种 JSON
风格 HTTP 风格 类似本地函数调用

5. 为什么区块链喜欢 JSON-RPC?

很多区块链节点都会提供 JSON-RPC 接口。

例如:

Ethereum 节点:

请求:

json 复制代码
{
 "jsonrpc":"2.0",
 "method":"eth_blockNumber",
 "params":[],
 "id":1
}

意思:

告诉我当前区块高度

返回:

json 复制代码
{
 "jsonrpc":"2.0",
 "result":"0x10d4f",
 "id":1
}

钱包、交易所、区块浏览器都可以通过 JSON-RPC 与节点通信。


6. JSON-RPC 2.0 的特点

① 轻量

没有复杂协议头:

json 复制代码
{
 "method":"login"
}

比 SOAP 等协议简单很多。


② 与语言无关

服务器可以:

  • Python
  • Java
  • Go
  • C++
  • JavaScript

客户端不用关心。

例如:

Python 客户端:

python 复制代码
request = {
    "jsonrpc":"2.0",
    "method":"add",
    "params":[1,2],
    "id":1
}

Go 服务端也能处理。


③ 支持批量请求

一次调用多个方法:

json 复制代码
[
 {
  "jsonrpc":"2.0",
  "method":"getUser",
  "id":1
 },
 {
  "jsonrpc":"2.0",
  "method":"getBalance",
  "id":2
 }
]

服务器返回:

json 复制代码
[
 {
  "result":"Tom",
  "id":1
 },
 {
  "result":100,
  "id":2
 }
]

7. JSON-RPC 2.0 的典型应用

区块链

  • 钱包 ↔ 节点
  • 交易所 ↔ 节点
  • DApp ↔ 区块链

例如:

  • Ethereum JSON-RPC
  • Bitcoin Core RPC

微服务

内部服务:

复制代码
订单服务

   |
JSON-RPC

   |

支付服务

远程控制

例如:

  • 游戏服务器
  • 自动化系统
  • 云服务管理

8. 一个简单理解

如果 REST 像:

"请给我这个资源"

那么 JSON-RPC 像:

"请帮我执行这个动作"

REST:

复制代码
GET /balance/user123

JSON-RPC:

json 复制代码
{
 "method":"getBalance",
 "params":["user123"]
}

如果你之前关注过 Telegram 加密通信、区块链接口、钱包安全 这些方向,那么 JSON-RPC 很值得掌握,因为很多钱包和节点之间的通信,本质上就是靠 JSON-RPC 完成的。

相关推荐
PixelBai4 小时前
什么是 JSON 验证工具?
json
apihz5 小时前
随机驾考题目(C 照科一 / 科四 2000+ 题)免费API调用教程
android·java·c语言·开发语言·网络协议·tcp/ip
猫头虎9 小时前
城市级IP代理:赋能全球企业本地化数字增长与安全合规 | Decodo 德口多
网络·python·网络协议·tcp/ip·安全·pandas·pip
努力努力再努力wz9 小时前
【高性能网络库与HTTP Server系列】:基于主从 Reactor 模型实现高性能 C++ 网络库与 HTTP Server
开发语言·网络·数据结构·数据库·c++·网络协议·http
码农学院10 小时前
电商零售品牌的6个技术信号——从JSON-LD结构化数据到llms.txt,让AI搜索主动推荐你的产品
人工智能·json·零售
月走乂山10 小时前
DeepSeek 对话记录一键导出:零依赖 Tampermonkey 脚本(支持 JSON/Markdown/ZIP)
json·油猴脚本·tampermonkey·数据导出·deepseek·对话记录·用户脚本
c2385611 小时前
HTTP 超文本传输协议全解:Web 世界的通信规则
前端·网络协议·http
云栖梦泽在12 小时前
跨境电商账号频繁验证怎么办?从公网 IP、ASN、浏览器环境到登录稳定性排查
网络·网络协议·tcp/ip·网络安全·性能优化
前网易架构师-高司机12 小时前
带标注的打电话识别数据集,识别率98.9%,9723张图,支持yolo,coco json,voc xml,文末有模型训练代码
yolo·json·手机·数据集·打电话