JSON-RPC是一种基于JSON的跨语言远程调用协议。有文本传输数据小,便于调试扩展的特色。json
JSON-RPC很是简单,在请求时向服务器传输数据格式以下(基于JSON2.0)数组
{ "jsonrpc" : 2.0, "method" : "sayHello", "params" : ["Hello JSON-RPC"], "id" : 1 }
服务器返回的数据格式也为JSON,其格式以下:服务器
{ "jsonrpc" : 2.0, "result" : "Hell JSON-RPC", "error" : null, "id" : 1 }
{ "code" : 1, "message" : "Nothing found", "data":null }
错误码-32768到-32000做为预约义错误的保留值,该范围内的任何未定义代码为将来保留使用。并发
代码 | 错误 | 含义 |
---|---|---|
-32700 | 解析错误 | 服务器接收到无效的JSON;服务器解析JSON文本发生错误。 |
-32600 | 无效的请求 | 发送的JSON不是一个有效的请求。 |
-32601 | 方法未找到 | 方法不存在或不可见。 |
-36602 | 无效的参数 | 无效的方法参数。 |
-36603 | 内部错误 | JSON-RPC内部错误。 |
-32000到-32099 | 服务器端错误 | 保留给具体实现服务器端错误。 |
客户端能够发送一个请求对象数组来进行批量调用。当全部的请求都响应完毕后,服务器应以一个数组做为响应,每一个请求都应该对应一个请求对象。服务器能够以任何宽度的并行性,以任意的顺序,并发的批量处理一个RPC调用。客户端能够经过id将请求和响应进行匹配。.net
请求翻译
{ "jsonrpc":"2.0", "method": "subtract", "params":[42, 23], "id": 1 }
响应调试
{ "jsonrpc":"2.0", "result": 19, "id": 1 }
请求code
{ "jsonrpc":"2.0", "method": "subtract", "params":{ "subtrahend": 23, "minuend": 42 }, "id": 3 }
响应对象
{ "jsonrpc":"2.0", "result": 19, "id": 3 }
(无id错误)
请求blog
{ "jsonrpc":"2.0", "method": 1, "params": "bar" }
响应
{ "jsonrpc": "2.0", "error":{ "code": -32600, "message": "Invalid Request" }, "id": null }