#json-rpc #客户端 #http # #API绑定

jsonrpc_client

一个异步、宏驱动的JSON-RPC客户端,具有可插拔的后端

9个版本 (破坏性更新)

0.7.1 2021年8月26日
0.7.0 2021年7月28日
0.6.0 2021年4月26日
0.5.1 2021年2月22日
0.2.0 2018年10月12日

#248HTTP客户端

Download history 123/week @ 2024-03-11 107/week @ 2024-03-18 106/week @ 2024-03-25 66/week @ 2024-04-01 158/week @ 2024-04-08 83/week @ 2024-04-15 74/week @ 2024-04-22 154/week @ 2024-04-29 91/week @ 2024-05-06 166/week @ 2024-05-13 224/week @ 2024-05-20 250/week @ 2024-05-27 19/week @ 2024-06-03 22/week @ 2024-06-10 20/week @ 2024-06-17 37/week @ 2024-06-24

每月101 次下载
3 crate 中使用

MIT/Apache

26KB
493

没有废话的Rust JSON-RPC客户端

功能

  • 无模板:由proc-macros驱动
  • 无客户端锁定:完全控制底层HTTP客户端
  • 轻量级:仅依赖于syn和serde
  • 异步就绪

它是如何工作的?

我们接收一个trait作为proc-macro的输入,输出另一个具有所有函数默认实现的trait。这使得我们能够去除所有创建JSON-RPC调用的模板,同时您还可以定义一个漂亮的接口!

我如何使用它?

  1. 依赖 jsonrpc_client

    [dependencies]
    jsonrpc_client = { version = "*", features = ["reqwest"] }
    
  2. 定义一个描述您想要与之通信的JSON-RPC API的trait,并用 #[jsonrpc_client::api] 注释它

    #[jsonrpc_client::api]
    pub trait Math {
        async fn subtract(&self, subtrahend: i64, minuend: i64) -> i64;
    }
    
  3. 定义您的客户端

    #[jsonrpc_client::implement(Math)]
    struct Client {
        inner: reqwest::Client,
        base_url: reqwest::Url,
    }
    
  4. 开始使用您的客户端!

后端

目前,客户端支持多个后端,所有后端都可以通过单独的功能标志激活

  • reqwest
  • surf
  • isahc

欢迎支持更多后端。

不幸的是,并非所有后端都可以支持。特别是

  • hreq:无法支持,因为它们的 Agent 在发送请求时需要 &mut self,这与 SendRequest trait不兼容。
  • awc:无法支持,因为它们的 Client 没有实现 Send

依赖关系

~2–16MB
~237K SLoC