RPC(Remote Procedure Call)指的是远程过程调用,简单的说,RPC就是从一台机器上通过参数传递的方式调用另一台机器上的一个函数或方法并得到响应结果。
JSON-RPC:remote procedure call protocol encoded in JSON
HTTP:可以看作是RPC的一种具体形式
区别:
- HTTP有标准,具有通用性,如格式、字段等等,可以方便地在网络上开放HTTP API让别的机器来使用这台服务器上的功能。
- RPC没有标准(json-rpc有),通常是同一个公司内部的两台机器之间通信,大家会按照实际需要去自定制一套RPC,这样做的好处是灵活高效,但是坏处就是没有通用性。
- JSON RPC: 相对于一般的HTTP请求通过URI调用远程服务器,JSON-RPC直接在内容中定义了要调用的函数名称(如 {“method”: “getUser”}),对于开发者来说非常的方便。
JSON-RPC格式:
JSON-RPC 2.0和1.0之间一些差异,我们这里介绍2.0的使用,一个JSON-RPC的请求必须包含以下4个字段。
request
- jsonrpc: 指定JSON-RPC的版本,必须设置为2.0
- id: 调用标识符,用于标示一次远程调用过程,值必须包含一个字符串、数值。
- method: 所要调用方法名称的字符串
- params: 方法传入的参数,若无参数则传入空[]
response:
- jsonrpc: 指定JSON-RPC的版本,固定为为2.0
- id: 调用标识符,用于标示一次远程调用过程,值必须包含一个字符串、数值。
- result: 如果调用成功则显示响应结果
- error: 如果调用失败则显示错误的信息,error带有以下几个字段
- code: 错误类型,必须为整数 【必须】
- message: 错误的简单描述字,该描述应尽量简短 【必须】
- data: 包含关于错误附加信息的基本类型或结构化类型 【可选】
参考:https://blog.csdn.net/chenguolinblog/article/details/90607551