async-graphql/docs/zh-CN/src/integrations_to_actix_web.md

32 lines
797 B
Markdown
Raw Normal View History

2020-04-15 03:15:30 +00:00
# Actix-web
2020-04-17 10:22:24 +00:00
2020-04-17 11:38:43 +00:00
`Async-graphql-actix-web`提供实现了`actix_web::FromRequest`的`GQLRequest`它其实是QueryBuilder的包装你可以调用`GQLRequest::into_inner`把它转换成一个`QueryBuilder`。
2020-04-17 10:22:24 +00:00
`WSSubscription`是一个支持Web Socket订阅的Actor。
## 请求例子
你需要把Schema传入`actix_web::App`作为全局数据。
```rust
async fn index(
schema: web::Data<Schema>,
gql_request: GQLRequest,
) -> web::Json<GQLResponse> {
web::Json(GQLResponse(gql_request.into_inner().execute(&schema).await))
}
```
## 订阅例子
```rust
async fn index_ws(
schema: web::Data<Schema>,
req: HttpRequest,
payload: web::Payload,
) -> Result<HttpResponse> {
ws::start_with_protocols(WSSubscription::new(&schema), &["graphql-ws"], &req, payload)
}
```