#api-wrapper #wrapper #api #jokeapi

jokeapi_rs

Rust 对 https://v2.jokeapi.dev/ 的包装

5 个版本

0.1.4 2021年7月1日
0.1.3 2021年6月25日
0.1.2 2021年6月3日
0.1.1 2021年6月3日
0.1.0 2021年6月1日

#209 in #api-wrapper

Apache-2.0

14KB
125

jokeapi_rs

Rust 对 JokeAPI 的包装

获取一个笑话

use jokeapi_rs::Joke;

fn main() {
    println!("{}", Joke::new().fetch().joke());
}

获取特定类型的笑话

类型可以是 "single" 或 "twopart"

use jokeapi_rs::Joke;

fn main() {
    println!("{}", Joke::new().of_type("single").fetch().joke());
}

获取属于特定类别的笑话

use jokeapi_rs::Joke;

fn main() {
    println!(
        "{}",
        Joke::new()
            .categories(
                ["programming", "spooky"]
                    .iter()
                    .map(|x| x.to_string())
                    .collect()
            )
            .fetch()
            .joke()
    )
}

获取包含所有字段的数据结构

use jokeapi_rs::structs::joke::Data;
use jokeapi_rs::structs::joke::DataKind;
use jokeapi_rs::Joke;

fn main() {
    let res: Data = Joke::new()
        .of_type("single")
        .categories(
            ["programming", "pun"]
                .iter()
                .map(|x| x.to_string())
                .collect(),
        )
        .blacklist(["sexist", "nsfw"].iter().map(|x| x.to_string()).collect())
        //.safe() // Uncomment to enable safe mode
        .fetch();

    // Get the joke
    // .joke() method on res does the following for you
    match res.kind.clone() {
        DataKind::TwoPart { setup, delivery } => {
            println!("{}\n{}", setup, delivery)
        }
        DataKind::Single { joke } => println!("{}", joke),
    }

    // Access all the json fields
    println!("{:#?}", res);
}

依赖

~6–18MB
~274K SLoC