JSON-RPC 2.0 是一种轻量级的远程过程调用(RPC)协议,它使用 JSON(JavaScript Object Notation)作为数据格式来进行通信。JSON-RPC 2.0 的设计目标是简单、易用,并且可以在不同的编程语言和平台之间进行互操作。
主要特点
-
简单性:JSON-RPC 2.0 的规范非常简洁,易于理解和实现。
-
轻量级:使用 JSON 作为数据格式,使得传输的数据量较小,适合在带宽有限的环境中使用。
-
跨平台:JSON 是一种通用的数据格式,几乎所有的编程语言都支持 JSON 的解析和生成,因此 JSON-RPC 2.0 可以在不同的平台和语言之间进行通信。
-
无状态:JSON-RPC 2.0 是无状态的,每个请求都是独立的,服务器不需要维护客户端的状态。
基本结构
JSON-RPC 2.0 的消息结构非常简单,主要包括以下几个部分:
-
jsonrpc:指定 JSON-RPC 的版本,必须是字符串 "2.0"。
-
method:要调用的方法名称,字符串类型。
-
params:传递给方法的参数,可以是数组或对象。
-
id:请求的唯一标识符,可以是字符串、数字或 null。服务器在响应时会返回相同的 id。
请求示例
{
"jsonrpc": "2.0",
"method": "subtract",
"params": [42, 23],
"id": 1
}
响应示例
{
"jsonrpc": "2.0",
"result": 19,
"id": 1
}
错误响应示例
{
"jsonrpc": "2.0",
"error": {
"code": -32601,
"message": "Method not found"
},
"id": 1
}
错误码
JSON-RPC 2.0 定义了一些标准的错误码,例如:
-
-32700:Parse error(解析错误)
-
-32600:Invalid Request(无效请求)
-
-32601:Method not found(方法未找到)
-
-32602:Invalid params(无效参数)
-
-32603:Internal error(内部错误)
应用场景
JSON-RPC 2.0 广泛应用于各种需要轻量级、跨平台通信的场景,例如:
-
Web 服务:作为后端服务的接口协议。
-
微服务:在微服务架构中进行服务间的通信。
-
物联网:在资源受限的设备上进行远程调用。
总结
JSON-RPC 2.0 是一种简单、轻量级的 RPC 协议,适用于需要在不同平台和语言之间进行通信的场景。它的设计使得实现和使用都非常方便,因此 MCP 所有传输机制均采用 JSON-RPC 2.0 协议来交换消息。 参考:JSON-RPC