#api-client #zelda #http #http-api #api

rusty_hyrule_compendium

用于 Hyrule 百科 API 的 Rust 库

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 日

#348HTTP 客户端

MIT 许可证

40KB
661

锈蚀的塞尔达百科库

一个用于在 Rust 中消费 Hyrule 百科 API 的库

MIT licensed

概述

此库公开了一个客户端,可用于从 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