Bangumi API Rust 客户端 (bangumi-api)
一个现代、异步的 Bangumi API Rust 客户端库。
本项目基于 tokio 和 reqwest 构建,提供了一套完整的强类型数据模型,让您能以类型安全、符合人体工程学的方式与 Bangumi API 进行交互。
✨ 特性
- 完全异步: 基于
async/await和tokio运行时,提供非阻塞 I/O。 - 强类型模型: 为所有 API 的请求和响应提供了完整的
serde序列化/反序列化数据结构。 - 全面的 API 覆盖: 封装了大部分 V0 版本的 API,包括:
- User: 用户信息
- Subject: 条目(动画、书籍、音乐、游戏、三次元)
- Character: 角色
- Person: 人物(声优、制作人等)
- Collection: 收藏管理
- Episode: 章节
- Index: 目录
- Revision: 修订历史
- 简洁的调用方式: 统一的
BangumiClient入口,链式调用构建请求。 - 统一的错误处理: 将 Bangumi API 返回的错误信息解析为
BangumiError结构体,方便调试。 - 自带测试: 包含覆盖了大部分 API 端点的单元测试。
📦 安装
将此库添加到您的 Cargo.toml 文件中:
[]
= "0.1.0" # 请使用 crates.io 上的最新版本
= { = "1", = ["full"] }
= "1.0"
🚀 快速开始
以下示例展示了如何使用 bangumi-api。
1. 实例化客户端
对于访问公开数据,可以直接使用默认客户端。
use BangumiClient;
let client = default;
如果需要访问需要授权的接口(如收藏、查看个人信息等),您需要在初始化客户端时提供 access_token。
use BangumiClient;
let my_token = "YOUR_ACCESS_TOKEN".to_string;
let auth_client = new;
提示: 建议从环境变量或配置文件中读取
access_token,避免硬编码在代码中。
2. 调用 API
所有 API 方法都作为 BangumiClient 的方法提供。
use BangumiClient;
use Result;
async
📚 API 模块
本库根据 Bangumi API 的功能对模块进行了划分,所有功能都通过 BangumiClient 的方法提供。
character(角色): 搜索、获取角色详情、封面、关联条目/人物,以及收藏/取消收藏角色。collection(收藏): 管理用户收藏。获取、添加、更新用户的条目、章节、角色、人物收藏状态。episode(章节): 获取条目的分集列表和特定分集详情。indice(目录): 操作用户创建的目录。获取、创建、编辑、删除目录及目录中的条目。person(人物): 搜索、获取人物详情、封面、关联条目/角色,以及收藏/取消收藏人物。revision(修订): 查看条目、角色、人物等的编辑历史。subject(条目): 搜索、浏览、获取条目详情、封面、关联人物/角色/条目,以及每日放送日历。user(用户): 获取用户公开信息、头像以及当前登录用户(自己)的详细信息。
🧪 运行测试
克隆本仓库后,您可以使用 Cargo 运行内置的测试套件:
注意:
- 大部分测试会向真实的 Bangumi API 发送请求。
- 涉及用户收藏、修改等需要授权的测试,在未提供有效
access_token的情况下会请求失败,导致测试不通过。- 如果需要完整测试,请修改对应
test.rs文件,在BangumiClient中填入您的access_token。
🤝 贡献
欢迎任何形式的贡献!如果您发现任何 Bug、有功能建议或希望改进代码,请随时:
- 提交一个 Issue。
- Fork 本项目并提交一个 Pull Request。
📜 许可证
本项目采用 MIT 许可证。详情请见 LICENSE 文件。