4 个版本
0.1.3 | 2022 年 11 月 12 日 |
---|---|
0.1.2 | 2022 年 11 月 11 日 |
0.1.1 | 2022 年 11 月 11 日 |
0.1.0 | 2022 年 11 月 11 日 |
#348 在 HTTP 客户端
40KB
661 行
锈蚀的塞尔达百科库
一个用于在 Rust 中消费 Hyrule 百科 API 的库
概述
此库公开了一个客户端,可用于从 API 请求信息
示例
首先将以下片段添加到您的 Cargo.toml
[dependencies]
rusty_hyrule_compendium = "0.1.3"
要使用此库,您需要实例化 Compendium 客户端。 CompendiumClient::default();
预先配置了底层的 HTTP 客户端和 API URL 为合理的值。
通过标识符的单个条目
use rusty_hyrule_compendium::blocking::{CompendiumApiClient, CompendiumClient};
use rusty_hyrule_compendium::domain::inputs::EntryIdentifier;
use rusty_hyrule_compendium::Result;
fn main() -> Result<()> {
// Preconfigured client using v2 of the API
let client = CompendiumClient::default();
// Requests can fail for a number of reasons, see the error module for available errors
let monster_entry = client.monster(EntryIdentifier::Id(123))?;
// "white-maned lynel"
let monster_name = monster_entry.name();
// "https://botw-compendium.herokuapp.com/api/v2/entry/white-maned_lynel/image"
let monster_image = monster_entry.image();
Ok(())
}
每个资源(下面有详细列表)都有一个 结构体 表示形式,并具有辅助方法来访问底层数据(例如 .name()
,.image()
等)
这里 包含示例的原始 JSON 响应
给定类别的所有条目
此外,可以通过类别请求所有上述内容,但需要模式匹配来获取条目。
use rusty_hyrule_compendium::blocking::{CompendiumApiClient, CompendiumClient};
use rusty_hyrule_compendium::domain::inputs::CompendiumCategory;
use rusty_hyrule_compendium::domain::responses::CategoryResult;
use rusty_hyrule_compendium::Result;
fn main() -> Result<()> {
// Preconfigured client using v2 of the API
let client = CompendiumClient::default();
let result = client.category(CompendiumCategory::Treasure)?;
match result {
CategoryResult::Treasure(treasure) => {
// Do something with the Vec<TreasureEntry>
}
_ => { /* Return some form of error, unexpected scenario */}
}
Ok(())
}
百科中的所有条目
也可以通过 .all_entries()
方法获取所有条目
例如:
use rusty_hyrule_compendium::blocking::{CompendiumApiClient, CompendiumClient};
use rusty_hyrule_compendium::Result;
fn main() -> Result<()> {
// Preconfigured client using v2 of the API
let client = CompendiumClient::default();
let all_entries = client.all_entries()?;
// Get all creature entries that are food specific, &Vec<CreatureEntry> type
let food_creatures = all_entries.creatures().food();
Ok(())
}
API 中可用的资源
- 怪物(标准和大师模式的)
- 生物
- 装备
- 材料
- 宝藏
依赖关系
~4–15MB
~226K SLoC