文章目录
json-rpc是一种基于json的rpc(远程调用)协议。
示例
比较好理解,基于官网示例直接就明白了。
python
--> {"jsonrpc": "2.0", "method": "subtract", "params": [42, 23], "id": 1}
<-- {"jsonrpc": "2.0", "result": 19, "id": 1}
--> {"jsonrpc": "2.0", "method": "subtract", "params": [23, 42], "id": 2}
<-- {"jsonrpc": "2.0", "result": -19, "id": 2}
通用
请求报文-模板
jsonrpc # jsonrpc版本,填2.0就行 必填
method # 方法名,对应 必填
id # 请求id 注:非必填`,如果不填表示是通知形式,不需要任何返回
param # 相当于常规json的请求体
模板:
json
{
"jsonrpc": "2.0",
"method": "具体的方法名",
"params": 具体的json请求体,可以是对象或数组
"id": 请求id
}
返回报文
返回报文-模板(成功)
模板:
json
{
"jsonrpc": "2.0",
"result": 返回结果,
"id": 请求id
}
返回报文-模板(报错)
json
{
"jsonrpc": "2.0",
"error": {
"code": 具体错误码,
"message": "具体错误信息",
"data": "具体错误体,可以是任何类型,所以不能简单的用json转换,建议做类型判断",
},
"id": "具体请求id"
}
通知形式(容易忽略掉这种调用方式)
上面也提到了,如果不传id是一种特殊的请求形式,表示通知,不需要返回。
请求报文:
没有id。
返回报文:
不需要响应,也没有返回报文。
写代码时这里应该特殊处理下,如果按常规接收响应的话代码会报错。
其他
文档
官网地址(很简陋):