async-graphql/docs/zh-CN/src/integrations_to_warp.md
2021-11-16 14:51:20 +08:00

1.3 KiB
Raw Blame History

Warp

Async-graphql-warp提供了两个Filtergraphqlgraphql_subscription

graphql用于执行QueryMutation请求它提取GraphQL请求然后输出一个包含async_graphql::Schemaasync_graphql::Request元组你可以在之后组合其它Filter或者直接调用Schema::execute执行查询。

graphql_subscription用于实现基于Web Socket的订阅它输出warp::Reply

请求例子

type MySchema = Schema<QueryRoot, EmptyMutation, EmptySubscription>;

let schema = Schema::new(QueryRoot, EmptyMutation, EmptySubscription);
let filter = async_graphql_warp::graphql(schema).and_then(|(schema, request): (MySchema, async_graphql::Request)| async move {
    // 执行查询
    let resp = schema.execute(request).await;

    // 返回结果
    Ok::<_, Infallible>(async_graphql_warp::Response::from(resp))
});
warp::serve(filter).run(([0, 0, 0, 0], 8000)).await;

订阅例子

let schema = Schema::new(QueryRoot, EmptyMutation, SubscriptionRoot);
let filter = async_graphql_warp::graphql_subscription(schema);
warp::serve(filter).run(([0, 0, 0, 0], 8000)).await;

更多例子

https://github.com/async-graphql/examples/tree/master/warp