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日 |
#248 在 HTTP客户端
每月101 次下载
在 3 crate 中使用
26KB
493 行
没有废话的Rust JSON-RPC客户端
功能
- 无模板:由proc-macros驱动
- 无客户端锁定:完全控制底层HTTP客户端
- 轻量级:仅依赖于syn和serde
- 异步就绪
它是如何工作的?
我们接收一个trait作为proc-macro的输入,输出另一个具有所有函数默认实现的trait。这使得我们能够去除所有创建JSON-RPC调用的模板,同时您还可以定义一个漂亮的接口!
我如何使用它?
-
依赖
jsonrpc_client
[dependencies] jsonrpc_client = { version = "*", features = ["reqwest"] }
-
定义一个描述您想要与之通信的JSON-RPC API的trait,并用
#[jsonrpc_client::api]
注释它#[jsonrpc_client::api] pub trait Math { async fn subtract(&self, subtrahend: i64, minuend: i64) -> i64; }
-
定义您的客户端
#[jsonrpc_client::implement(Math)] struct Client { inner: reqwest::Client, base_url: reqwest::Url, }
-
开始使用您的客户端!
后端
目前,客户端支持多个后端,所有后端都可以通过单独的功能标志激活
- reqwest
- surf
- isahc
欢迎支持更多后端。
不幸的是,并非所有后端都可以支持。特别是
- hreq:无法支持,因为它们的
Agent
在发送请求时需要&mut self
,这与SendRequest
trait不兼容。 - awc:无法支持,因为它们的
Client
没有实现Send
。
依赖关系
~2–16MB
~237K SLoC