1. JSON-RPC概述

JSON-RPC是一个无状态且轻量级的远程过程调用(RPC)协议。它允许运行在基于socket、http等诸多不同消息传输环境的同一进程中,其使用JSON作为数据格式。发送一个请求对象至服务端代表一个RPC调用,一个请求对象包含下列成员:

  • jsonrpc: 指定JSON-RPC协议版本的字符串,如果是2.0版本,则必须准确写为 “2.0”。
  • method: 表示所要调用方法名称的字符串。以RPC开头的方法名,用英文句号(U+002E or ASCII 46)连接的为预留给RPC内部的方法名及扩展名,且不能在其他地方使用。
  • params: 调用方法所需要的结构化参数值,该成员参数可以被省略。
  • id: 已建立客户端的唯一标识id,该值必须包含一个字符串、数值或NULL值。如果不包含该成员则被认定为是一次通知调用。该值一般不为NULL,若为数值则应为整数。

当发起一次rpc调用时,服务端都必须回复一个JSON对象作为响应,响应对象包含下列成员:

  • jsonrpc: 指定JSON-RPC协议版本的字符串,如果是2.0版本,则必须准确写为“2.0”。
  • result: 该成员在成功时必须包含,当调用方法失败时必须不包含该成员。服务端中的被调用方法决定了该成员的值。
  • error: 该成员在失败时必须包含,当没有错误引起时,不包含该成员。若引起错误,则该成员对象将包含code和message两个属性。
  • id: 该成员必须包含。该成员值必须与请求对象中的id成员值一致。若在检查请求对象id时错误(例如参数错误或无效请求),则该值必须为空值(NULL)。