[−][src]Crate gql_client
Minimal GraphQL client for rust
- Simple API, supports queries and mutations
- Does not require schema file for introspection
Basic Usage
- Use client.query_with_vars for queries with variables
- There's also a wrapper client.query if there is no need to pass variables
use gql_client::Client; use serde::{Deserialize, Serialize}; #[derive(Deserialize)] pub struct Data { user: User } #[derive(Deserialize)] pub struct User { id: String, name: String } #[derive(Serialize)] pub struct Vars { id: u32 } #[tokio::main] async fn main() -> Result<(), Box<dyn std::error::Error>> { let endpoint = "https://graphqlzero.almansi.me/api"; let query = r#" query UserByIdQuery($id: ID!) { user(id: $id) { id name } } "#; let client = Client::new(endpoint); let vars = Vars { id: 1 }; let data = client.query_with_vars::<Data, Vars>(query, vars).await.unwrap(); println!("Id: {}, Name: {}", data.user.id, data.user.name); Ok(()) }
Passing HTTP headers
Client exposes new_with_headers function to pass headers using simple HashMap<&str, &str>
use gql_client::Client; use std::collections::HashMap; #[tokio::main] async fn main() -> Result<(), Box<dyn std::error::Error>> { let endpoint = "https://graphqlzero.almansi.me/api"; let mut headers = HashMap::new(); headers.insert("authorization", "Bearer <some_token>"); let client = Client::new_with_headers(endpoint, headers); Ok(()) }
Structs
Client | |
GraphQLError |