#json-rpc-client #json-rpc #macro #rpc #client #generate #strongly-typed

jsonrpc-client-core

用于生成无传输依赖、自动序列化、强类型 JSON-RPC 2.0 客户端的库

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 解析器实现

Download history 101/week @ 2024-03-31 48/week @ 2024-04-07 57/week @ 2024-04-14 67/week @ 2024-04-21 51/week @ 2024-04-28 54/week @ 2024-05-05 55/week @ 2024-05-12 54/week @ 2024-05-19 50/week @ 2024-05-26 53/week @ 2024-06-02 37/week @ 2024-06-09 60/week @ 2024-06-16 55/week @ 2024-06-23 7/week @ 2024-06-30 21/week @ 2024-07-07 49/week @ 2024-07-14

144 每月下载量
8 个库中(7 个直接) 使用

MIT/Apache

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