8 定义GraphQL架构之创建变更类型
在上一篇中,我们探讨了如何定义GraphQL架构中的查询类型。这一篇将专注于创建变更类型(Mutation Types),这是构建GraphQL API的重要组成部分。变更类型让我们能够对服务器中的数据进行创建、更新和删除等操作。
变更类型概述
在GraphQL中,变更类型用于处理数据的更改。与查询类型不同,查询类型只负责读取数据,而变更类型则允许客户端对数据进行操作。我们可以将变更类型看作是一个函数集合,每个函数负责执行特定的数据操作。
创建变更类型的基本结构
首先,我们需要定义变更类型。变更类型通常使用 type Mutation
来声明。变更操作将包含需要的输入参数,并返回相应的结果。以下是一个基本的变更类型的定义示例:
1 | type Mutation { |
在这个例子中,我们定义了三个变更操作:
createPost
: 创建一个新的帖子,接受title
和content
作为输入,并返回新创建的Post
对象。updatePost
: 更新一个现有的帖子,接受帖子id
和可选的title
和content
,返回更新后的Post
对象。deletePost
: 删除一个帖子,接受id
作为输入,返回一个布尔值表示操作是否成功。
示例:实现变更操作
接下来,我们来实现这些操作。假设我们有一个简单的Post对象和一个数组来存储它们:
1 | let posts = []; |
在上述代码中,我们定义了一个 resolvers
对象,其中包含了我们为 Mutation
定义的三个操作的逻辑。注意,每个操作都是一个函数,接受必要的参数并返回相应的结果。
测试变更操作
现在我们可以测试这些变更操作。假设我们使用的是 Apollo Server,可以通过 GraphQL Playground 或 Postman 来测试我们的变更类型。
创建一个帖子
1 | mutation { |
更新一个帖子
1 | mutation { |
删除一个帖子
1 | mutation { |
总结
通过本节的学习我们定义了 Mutation
类型,并实现了基本的创建、更新和删除操作。变更类型为我们的 GraphQL API 提供了数据写入能力,与查询类型相辅相成。
在下一篇文章中,我们将讨论如何定义子类型与枚举,以进一步丰富我们的 GraphQL 架构。如果您对本章内容有任何问题或疑虑,欢迎随时讨论!
8 定义GraphQL架构之创建变更类型