Crate finchers_juniper[][src]

A set of extensions for supporting Juniper integration.

Examples

#[macro_use]
extern crate finchers;
extern crate finchers_juniper;
#[macro_use]
extern crate juniper;

use juniper::{EmptyMutation, RootNode};

// The contextual information used when GraphQL query executes.
//
// Typically it contains a connection retrieved from pool
// or credential information extracted from HTTP headers.
struct MyContext {
    // ...
}
impl juniper::Context for MyContext {}

struct Query {}
graphql_object!(Query: MyContext |&self| {
    field apiVersion() -> &str { "1.0" }
    // ...
});

let schema = RootNode::new(
    Query {},
    EmptyMutation::<MyContext>::new(),
);

// An endpoint which acquires a GraphQL context from request.
let fetch_graphql_context =
    endpoint::unit().map(|| MyContext { /* ... */ });

// Build an endpoint which handles GraphQL requests.
let endpoint = path!(@get / "graphql" /)
    .and(fetch_graphql_context)
    .wrap(finchers_juniper::execute::nonblocking(schema));

Re-exports

pub use graphiql::graphiql_source;
pub use request::graphql_request;

Modules

execute

GraphQL executors.

graphiql

Endpoint for serving GraphiQL source.

request

Endpoint for parsing GraphQL request.