7个不稳定版本
使用旧的Rust 2015
0.4.1 | 2019年10月10日 |
---|---|
0.4.0 | 2018年4月22日 |
0.3.0 | 2018年4月20日 |
0.2.2 | 2018年4月20日 |
0.0.1 | 2018年4月20日 |
#2 in #response-object
156 每月下载量
33KB
353 行
jrpc:一个用于jsonrpc规范的类型的超轻量级crate
查看文档以获取更多详细信息。
许可证
本仓库中的源代码受以下任一许可证的许可:
- Apache License, Version 2.0, (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
由您选择。
除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交以包含在工作中的任何贡献,都应按上述方式双重许可,而无需任何附加条款或条件。
lib.rs
:
jrpc:一个用于jsonrpc规范的类型的超轻量级crate
此crate定义了jsonrpc规范的datatypes...就这么简单。
此crate永远不会触及网络、文件系统等。它仅使用serde轻松构建、序列化和反序列化请求和响应数据类型。
规范
以下内容直接复制粘贴自:http://www.jsonrpc.org/specification
类型尝试在其文档字符串中正确复制相关文档片段。
1 概述
JSON-RPC是一种无状态的轻量级远程过程调用(RPC)协议。本规范主要定义了几个数据结构及其处理规则。它在传输上具有不可知性,这意味着这些概念可以在同一进程中使用,通过套接字、通过HTTP或在许多不同的消息传递环境中使用。它使用JSON(RFC 4627)作为数据格式。
它设计得很简单!
2 术语
在此文档中,“MUST”、“MUST NOT”、“REQUIRED”、“SHALL”、“SHALL NOT”、“SHOULD”、“SHOULD NOT”、“RECOMMENDED”、“MAY”和“OPTIONAL”等关键字应按RFC 2119中所述解释。
由于JSON-RPC使用JSON,因此它具有相同的类型系统(参见http://www.json.org或RFC 4627)。JSON可以表示四种原始类型(字符串、数字、布尔值和null)和两种结构化类型(对象和数组)。在本规范中,“原始”一词指的是这四种原始JSON类型中的任何一种。“结构化”一词指的是这两种结构化JSON类型中的任何一种。当此文档引用任何JSON类型时,其首字母始终大写:对象、数组、字符串、数字、布尔值、null。True和False也大写。
客户端和服务器之间交换的所有成员名称,如果考虑进行任何类型的匹配,应被视为区分大小写的。函数、方法和过程可以假定可以互换。
客户端定义为请求对象的来源和响应对象的处理器。
服务器定义为响应对象的来源和请求对象的处理器。
本规范的任何一种实现都可以轻松地同时扮演这两种角色,即使是对不同的客户端或同一客户端。本规范不涉及这一层复杂性。
3 兼容性
JSON-RPC 2.0请求对象和响应对象可能与现有的JSON-RPC 1.0客户端或服务器不兼容。然而,区分这两个版本很容易,因为2.0始终有一个名为“jsonrpc”的成员,其字符串值为“2.0”,而1.0没有。大多数2.0实现应考虑尝试处理1.0对象,即使不是1.0的端到端和类提示方面。
4 请求对象
参见Request
4.1 通知
参见IdReq
4.2 参数结构
5 响应对象
参见Response
5.1 错误对象
6 批量操作
注意:只需简单使用一个
Vec<Request>
和一个Vec<Response>
即可。
要同时发送多个请求对象,客户端可以发送一个填充有请求对象的数组。
在处理完所有批量请求对象后,服务器应以一个包含相应响应对象的数组进行响应。对于每个请求对象,都应该有一个响应对象,除了通知不应该有响应对象。服务器可以将批量rpc调用作为一组并发任务处理,以任何顺序和任何并行度处理它们。
从批量调用返回的响应对象可以在数组中以任何顺序返回。客户端应根据每个对象中的id成员在请求对象集合和结果响应对象集合之间匹配上下文。
如果批量rpc调用本身未能识别为有效的JSON或至少包含一个值的数组,则服务器必须返回一个单独的响应对象。如果响应数组中没有包含要发送给客户端的响应对象,则服务器不得返回空数组,而应返回空值。
7 示例
省略。参见规范
8 扩展
此库不支持检查扩展。有关规范的详细信息,请参阅 Request.method
。
依赖项
~0.7–1.4MB
~32K SLoC