6个版本
0.2.0 | 2024年3月11日 |
---|---|
0.1.4 | 2021年1月9日 |
0.1.3 | 2020年12月31日 |
在解析器实现中排名678
每月下载153次
在starry中使用
16KB
188 行
一个简单的"自带查询和类型"的GraphQL客户端。
设计原则
- 我想使用自己的Rust结构,而不是由宏生成
- 我想使用自己的查询,而不是由宏生成
- 我想在Rust代码中以字符串形式管理查询
为什么不使用它
- 目前它非常年轻,API可能还会增长和变化
- 已经有了一个流行且经过充分测试的Rust GraphQL客户端
如何使用它
简单查询
github stars 示例展示了如何查询GitHub的GraphQL API以获取仓库的星星数量。
首先创建一个客户端,您可以保留和重用
let mut graphql_client = GraphqlClient::new("https://api.github.com/graphql")?;
graphql_client.set_bearer_auth("your-github-api-token");
您需要一个结构体来反序列化服务器的响应
#[derive(Deserialize)]
pub struct Repository {
stargazers: Count,
}
(Count
是byo_graphql提供的工具结构体,它只是 struct struct Count
)
你需要一个查询
let query = r#"{
repository(owner: "Canop", name: "bacon") {
stargazers {
totalCount
}
}
}"#;
注意:在示例的完整代码中,查询是通过format!
动态构建的,正如您通常所做的那样。
现在您可以获取数据
let repo: Repository = graphql_client.get_first_item(query).await?;
let stars: usize = repo.stargazers.into();
查询长列表
github issues 示例演示了如何使用基于游标的交换查询长列表。
依赖关系
~6–19MB
~268K SLoC