编写schema

这里预计六分钟

GraphQL schema是任何GraphQL的核心,描述了客户端连接到这里的可用字段。

核心代码块里有个叫’type‘ 的,他包含以下功能:

  • 创建types之间的关系(e.g. between a Book and an Author)。

  • 定义客户端可能执行的操作,类似获取了什么数据 (query) 和 更新了什么数据 (mutating)。

  • 如果需要,自己来解释客户端需要的功能 (via introspection).

到最后,我们希望我们解释清楚里面的规则。

Schema 定义

为了更好地理解GraphQL的功能, GraphQL 用了一个比较容易理解的语法“SDL”. SDL 用来表示模式里可用的类型以及这些如何关联的。

看起来SDL和JavaScript比较相似,所以说GraphQL-specific 可以存为string。现在我们专注于解释SDL的用法。后面我们再来进入JavaScript的使用案例。

这个案例用SDL来定义 books 和authors:

type Book {
  title: String
  author: Author
}

type Author {
  name: String
  books: [Book]
}

这里重要的是定义数据的关系和样式。不是数据来源于哪或者说哪里存储的-只是将来外面输出的样式。

通过在schema的里面来定义这些逻辑,我进可以让client看到我们提供了什么数据。

GraphQL客户端受益于GraphQL服务操作的精确性,特别是当和传统的rest方法比,这样可以减少服务器的请求。

Scalar 类型

Scalar 类型最终会返回具体的数据。默认的GraphQL类型提供以下信息:

  • Int: 32位

  • Float: 浮点型

  • String: 字符串

  • Boolean: 布尔值

  • ID (serialized as String): 唯一标志符,当表示为string的时候,人类不可读(原文是not intended to be human‐readable)

这些类型包含了大多数使用场景,如果有特殊场景可以使用自定义的类型。

对象类型

The object type is the most common type used in a schema and represents a group of fields. Each field inside of an object type maps to another type, allowing nested types and circular references.

。。。。。

Last updated