Actix-web
Async-graphql-actix-web
提供了GraphQLRequest
提取器用于提取GraphQL
请求,和GraphQLResponse
用于输出GraphQL
响应。
GraphQLSubscription
用于创建一个支持 Web Socket 订阅的 Actor。
请求例子
你需要把 Schema 传入actix_web::App
作为全局数据。
#![allow(unused)] fn main() { extern crate async_graphql_actix_web; extern crate async_graphql; extern crate actix_web; use async_graphql::*; #[derive(Default,SimpleObject)] struct Query { a: i32 } let schema = Schema::build(Query::default(), EmptyMutation, EmptySubscription).finish(); use actix_web::{web, HttpRequest, HttpResponse}; use async_graphql_actix_web::{GraphQLRequest, GraphQLResponse}; async fn index( schema: web::Data<Schema<Query, EmptyMutation, EmptySubscription>>, request: GraphQLRequest, ) -> web::Json<GraphQLResponse> { web::Json(schema.execute(request.into_inner()).await.into()) } }
订阅例子
#![allow(unused)] fn main() { extern crate async_graphql_actix_web; extern crate async_graphql; extern crate actix_web; use async_graphql::*; #[derive(Default,SimpleObject)] struct Query { a: i32 } let schema = Schema::build(Query::default(), EmptyMutation, EmptySubscription).finish(); use actix_web::{web, HttpRequest, HttpResponse}; use async_graphql_actix_web::GraphQLSubscription; async fn index_ws( schema: web::Data<Schema<Query, EmptyMutation, EmptySubscription>>, req: HttpRequest, payload: web::Payload, ) -> actix_web::Result<HttpResponse> { GraphQLSubscription::new(Schema::clone(&*schema)).start(&req, payload) } }
更多例子
https://github.com/async-graphql/examples/tree/master/actix-web