#graphql-client #graphql #client

byo-graphql

简单的“自带查询和类型”GraphQL客户端

6个版本

0.2.0 2024年3月11日
0.1.4 2021年1月9日
0.1.3 2020年12月31日

解析器实现中排名678

Download history 11/week @ 2024-03-27 11/week @ 2024-04-03 3/week @ 2024-05-29 4/week @ 2024-06-05

每月下载153
starry中使用

MIT许可证

16KB
188

MIT Latest Version docs Chat on Miaou

一个简单的"自带查询和类型"的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