3. 架构定义语言 (SDL)
3m

📄 GraphQL 架构

一个 架构 就像一个 在服务器和客户端之间。它定义了 API 可以和不可以做什么,以及客户端如何请求或更改数据。它是一个抽象层,为使用者提供灵活性,同时隐藏后端实现细节。

在我们开始定义架构之前,让我们快速了解一下 架构定义语言,或者

如果你已经熟悉 ,可以自由地跳到下一课。

本质上,一个架构是 对象类型 的集合,其中包含 字段。每个 都有它自己的类型。字段的类型可以是 标量 (例如 IntString),也可以是 另一个对象类型。例如,Track 在我们的架构中将有一个 author ,类型为 Author

我们使用 type 关键字声明类型,后面跟着类型名称(PascalCase 是最佳实践),然后打开括号来包含其包含的

type SpaceCat {
# Fields go here
}

通过其名称(camelCase)、冒号以及字段的类型( 或对象)来声明。一个字段还可以包含一个列表,用方括号表示:

type SpaceCat {
age: Int
missions: [Mission]
}

与 Javascript 对象(看起来很相似)不同, 不用逗号分隔。此外,我们可以指定每个字段值是可空还是不可空。如果字段不应该为空,我们在其类型后面添加一个感叹号:

A doodle showing the SpaceCat type and its fields: name, age and missions
以下哪些是有效的字段类型?
代码挑战!

定义一个 SpaceCat 类型,包含以下字段:name 类型为 String(非空)、age 类型为 Intmissions 类型为 ListMission

正在加载...
加载进度

好的,在我们开始编写架构之前,最后一点:描述

良好的做法是 你的架构,就像注释代码一样有用。这使得你的队友(和未来的你)更容易理解发生了什么。它还允许像 这样的工具在 API 使用者需要时,指导他们了解他们可以使用你的 API 做些什么。

为此, 允许你通过在类型和 上方直接编写字符串(用引号括起来)来添加描述。

"I'm a regular description"

三个“双引号”允许你添加换行符,以便更清晰地格式化较长的注释。

"""
I'm a block description
with a line break
"""
A doodle of the SpaceCat type with its description and fields
代码挑战!

SpaceCat 类型添加块描述(三个“双引号”),并为 name 字段添加普通描述。

正在加载...
加载进度

涵盖了最后一点,我们完成了快速复习。让我们构建我们的架构!

上一页

分享你关于本课的问题和评论

你的反馈帮助我们改进!如果你卡住了或感到困惑,请告诉我们,我们会帮助你。所有评论都是公开的,必须遵守 Apollo 行为准则。请注意,已解决或已解决的评论可能会被删除。

你需要一个 GitHub 帐户才能在下面发布。没有帐户? 请在我们的 Odyssey 论坛中发布。