JSON-RPC 2.0 是一种轻量级的远程过程调用协议,它严格定义了请求和响应的数据结构。以下是其规范要求:

1 请求(Request)结构

一个合法的 JSON-RPC 2.0 请求必须包含以下字段:

字段说明

  1. jsonrpc (必须)

    • 类型: 字符串

    • 值必须为 "2.0"

    • 用于标识 JSON-RPC 协议的版本

  2. method (必须)

    • 类型: 字符串

    • 表示要调用的方法名

  3. params (可选)

    • 类型: 数组或对象

    • 包含要传递给方法的参数

    • 可以省略(当没有参数时)

  4. id (可选)

    • 类型: 字符串、数字或null

    • 用于匹配请求和响应

    • 如果是通知(不需要响应)则可以省略或为null

 

2 响应(Response)结构

成功的响应结构:

错误响应结构:

字段说明

  1. jsonrpc (必须)

    • 类型: 字符串

    • 值必须为 "2.0"

  2. result (成功时必须)

    • 类型: 任意

    • 包含方法调用的返回值

    • 如果调用失败则必须不存在

  3. error (失败时必须)

    • 类型: 对象

    • 包含错误信息

    • 如果调用成功则必须不存在

    • 子字段:

      • code: 整数,表示错误类型

      • message: 字符串,简短的错误描述

      • data: 可选,包含关于错误的附加信息

  4. id (必须)

    • 类型: 与请求中的id相同

    • 必须与对应请求中的id相同

    • 如果请求中的id为null(通知),则响应中不能包含id

3 错误代码规范

JSON-RPC 2.0 定义了一些标准错误代码:

代码 含义 说明
-32700 解析错误(Parse error) 服务器接收到无效的JSON
-32600 无效请求(Invalid Request) JSON格式正确但不是有效的请求
-32601 方法不存在(Method not found) 请求的方法不存在或不可用
-32602 无效参数(Invalid params) 提供的参数无效或不正确
-32603 内部错误(Internal error) JSON-RPC内部错误
-32000到-32099 服务器错误(Server error) 保留用于实现定义的服务器错误

 

4 通知(Notification)

通知是一种特殊的请求,不需要响应:

  • 请求中没有id字段,或idnull

  • 服务器不应响应通知

  • 客户端不应期待任何响应

示例通知请求:

5 批量请求和响应

JSON-RPC 2.0 支持批量请求,即在一个JSON数组中包含多个请求对象:

 服务器应返回一个包含对应响应的数组,顺序应与请求一致。对于通知请求,响应数组中不应包含对应的条目。

6 示例

完整请求示例

成功响应示例

错误响应示例

这些规范确保了JSON-RPC 2.0的实现可以跨语言和平台互操作。

 

 

分类&标签