106 个版本
0.19.6-beta1 | 2024 年 7 月 23 日 |
---|---|
0.19.6-beta.6 | 2024 年 8 月 20 日 |
0.19.5 | 2024 年 6 月 19 日 |
0.19.3 | 2024 年 1 月 22 日 |
0.11.3-rc.5 | 2021 年 7 月 24 日 |
#631 in 网页编程
每月 589 次下载
用于 8 crate
2MB
51K SLoC
lemmy_api_common
此 crate 提供了构建 Lemmy 客户端所需的所有数据类型。您可以使用它们与您选择的 HTTP 客户端一起使用。
以下是一个使用 reqwest 的示例
let params = GetPosts {
community_name: Some("asklemmy".to_string()),
..Default::default()
};
let client = Client::new();
let response = client
.get("https://lemmy.ml/api/v3/post/list")
.query(¶ms)
.send()
.await?;
let json = response.json::<GetPostsResponse>().await.unwrap();
print!("{:?}", &json);
如您所见,每个 API 端点都需要一个参数类型(GetPosts)、路径(/post/list)和响应类型(GetPostsResponse)。您可以从 此文件 中找到路径和处理方法。参数类型和响应类型在每个处理方法中定义。
有关 Lemmy API 客户端的真实示例,请查看 lemmyBB。
Lemmy 还提供 WebSocket API。您可以在 此文件 中找到完整的 WebSocket 代码。
生成 TypeScript 绑定
可以通过运行 cargo test --features full
来生成 TypeScript 绑定(API 类型)。ts 文件将生成到 bindings
文件夹中。
此 crate 使用 ts_rs
宏 derive(TS)
和 ts(export)
来为绑定生成属性类型。
依赖项
~12–53MB
~1M SLoC