知海

Rust:Cynic(客户端)

graphql-github-io-zh-Hans生态项目与库

Rust:Cynic(客户端)

描述: 一个为 Rust 设计的自带类型(bring your own types)GraphQL 客户端。

链接: 官网 · GitHub

这是一个 Rust 客户端库,它根据你提供的类型生成查询,并验证这些类型是否与你的 schema 形状匹配。

它提供了一个生成器,用于从现有的 GraphQL 查询中引导(bootstrap)类型。

使用示例

rust 复制代码
#[derive(cynic::QueryFragment, Debug)]
#[cynic(
    schema_path = "../schemas/starwars.schema.graphql",
    query_module = "query_dsl",
    graphql_type = "Root",
    argument_struct = "FilmArguments"
)]
struct FilmDirectorQuery {
    #[arguments(id = &args.id)]
    film: Option<Film>,
}

#[derive(cynic::QueryFragment, Debug)]
#[cynic(
    schema_path = "../schemas/starwars.schema.graphql",
    query_module = "query_dsl",
    graphql_type = "Film"
)]
struct Film {
    title: Option<String>,
    director: Option<String>,
}

#[derive(cynic::FragmentArguments)]
struct FilmArguments {
    id: Option<cynic::Id>,
}

fn main() {
    use cynic::{QueryBuilder, http::ReqwestBlockingExt};

    let query = FilmDirectorQuery::build(&FilmArguments {
        id: Some("ZmlsbXM6MQ==".into()),
    })

    reqwest::blocking::Client::new()
        .post("https://swapi-graphql.netlify.com/.netlify/functions/index")
        .run_graphql(query)
        .unwrap()
}

mod query_dsl {
    cynic::query_dsl!("../schemas/starwars.schema.graphql");
}

帮助我们改进文档

发现翻译问题或内容错误?请告诉我们。