async-graphql/docs/zh-CN/src/integrations_to_warp.md
2020-04-17 19:33:28 +08:00

1.0 KiB
Raw Blame History

Warp

Async-graphql-warp提供了两个Filtergraphqlgraphql_subscription

graphql用于执行QueryMutation请求他总是要求POST方法输出一个包含SchemaQueryBuilder的元组你可以在之后组合其它Filter或者直接调用QueryBuilder::execute执行查询。

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

请求例子

let schema = Schema::new(QueryRoot, EmptyMutation, EmptySubscription);
let filter = async_graphql_warp::graphql(schema).and_then(|(schema, builder): (_, QueryBuilder)| async move {
    // 执行查询
    let resp = builder.execute(&schema).await;

    // 返回结果
    Ok::<_, Infallible>(warp::reply::json(&GQLResponse(resp)).into_response())
});
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;