async-graphql/docs/zh-CN/src/quickstart.md
Sunli d03ad2d50d Update book (#310)
Update book
2020-10-13 23:13:36 +08:00

54 lines
1.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 快速开始
## 添加依赖
```toml
[dependencies]
async-graphql = "2.0"
async-graphql-actix-web = "2.0" # 如果你需要集成到Actix-web
async-graphql-warp = "2.0" # 如果你需要集成到Warp
async-graphql-tide = "2.0" # 如果你需要集成到Tide
```
## 写一个Schema
一个GraphQL的Schema包含一个必须的查询(Query)根对象,可选的变更(Mutation)根对象和可选的订阅(Subscription)根对象这些对象类型都是用Rust语言的结构来描述它们结构的字段对应GraphQL对象的字段。
Async-graphql实现了常用数据类型到GraphQL类型的映射例如`i32`, `f64`, `Option<T>`, `Vec<T>`等。同时,你也能够[扩展这些基础类型](custom_scalars.md)基础数据类型在GraphQL里面称为标量。
下面是一个简单的例子,我们只提供一个查询,返回`a`和`b`的和。
```rust
use async_graphql::*;
struct Query;
#[Object]
impl Query {
/// Returns the sum of a and b
async fn add(&self, a: i32, b: i32) -> i32 {
a + b
}
}
```
## 执行查询
在我们这个例子里面只有Query没有Mutation和Subscription所以我们用`EmptyMutation`和`EmptySubscription`来创建Schema然后调用`Schema::execute`来执行查询。
```rust
let schema = Schema::new(Query, EmptyMutation, EmptySubscription);
let res = schema.execute("{ add(a: 10, b: 20) }").await;
```
## 把查询结果输出为JSON
```rust
let json = serde_json::to_string(&res);
```
## 和Web Server的集成
请参考https://github.com/async-graphql/examples。