6 个版本 (重大变更)
使用旧的 Rust 2015
0.5.0 | 2018年6月25日 |
---|---|
0.4.0 | 2018年6月18日 |
0.3.0 | 2018年3月6日 |
0.2.1 | 2017年9月11日 |
0.1.0 | 2017年7月19日 |
#2297 in 解析器实现
144 每月下载量
在 8 个库中(7 个直接) 使用
20KB
319 行
jsonrpc-client-core
用于生成无传输依赖、自动序列化、强类型 JSON-RPC 2.0 客户端的库。
此库主要提供一个宏,jsonrpc_client
。该宏生成可以用于调用 JSON-RPC 2.0 API 的结构体。该宏允许您在结构体上列出带有参数和返回类型的方法。然后,该宏会生成一个结构体,它会自动序列化参数、发送请求并将响应反序列化为目标类型。
传输
jsonrpc-client-core
库本身以及由 jsonrpc_client
宏生成的结构体是无传输依赖的。它们可以使用实现 Transport
特性的任何类型。
主要的(也是迄今为止唯一的)传输实现是在 jsonrpc-client-http
库中的基于 Hyper 的 HTTP 实现。
示例
#[macro_use]
extern crate jsonrpc_client_core;
extern crate jsonrpc_client_http;
use jsonrpc_client_http::HttpTransport;
jsonrpc_client!(pub struct FizzBuzzClient {
/// Returns the fizz-buzz string for the given number.
pub fn fizz_buzz(&mut self, number: u64) -> RpcRequest<String>;
});
fn main() {
let transport = HttpTransport::new().standalone().unwrap();
let transport_handle = transport
.handle("http://api.fizzbuzzexample.org/rpc/")
.unwrap();
let mut client = FizzBuzzClient::new(transport_handle);
let result1 = client.fizz_buzz(3).call().unwrap();
let result2 = client.fizz_buzz(4).call().unwrap();
let result3 = client.fizz_buzz(5).call().unwrap();
// Should print "fizz 4 buzz" if the server implemented the service correctly
println!("{} {} {}", result1, result2, result3);
}
许可:MIT/Apache-2.0
依赖
~3.5–5.5MB
~110K SLoC