7 定义GraphQL架构之创建查询类型
在上一篇中,我们讨论了如何搭建一个基本的 GraphQL 服务器,包括设置服务器与中间件。现在,我们将进入 GraphQL 的核心部分:定义架构。在这一篇中,我们专注于如何创建查询类型,让客户端能够根据需求请求数据。
了解GraphQL查询类型
在 GraphQL 中,查询类型负责处理对数据的读取请求。它定义了客户端可以请求哪些数据,以及如何组织这些数据。查询类型是 GraphQL 架构的一个重要组成部分,通常是我们与 API 交互的第一步。
创建查询类型
要定义查询类型,我们首先需要使用 GraphQL
提供的类型系统。下面是一个简单的例子,我们将构建一个图书管理系统的查询类型。
假设我们有以下需求:
- 能够查询所有图书的列表。
- 能够根据图书的 ID 查询特定图书的信息。
Step 1: 定义图书类型
首先,我们需要定义一个图书类型。我们可以使用 GraphQLObjectType
来实现。
1 | const { GraphQLObjectType, GraphQLString, GraphQLList, GraphQLSchema, GraphQLID } = require('graphql'); |
在上述代码中,我们定义了一个名为 Book
的类型,该类型包含三个字段:id
、title
和 author
。这让我们可以在查询中请求图书的这些属性。
Step 2: 创建查询类型
接下来,我们将创建查询类型,该类型将允许我们获取一个图书列表和单个图书。我们将其定义为一个新的 GraphQLObjectType
。
1 | const RootQuery = new GraphQLObjectType({ |
在此代码中,我们创建了一个名为 RootQueryType
的查询对象。它包含两个字段:
books
:返回一个图书列表。book
:根据图书的 id 返回单个图书。
resolve
函数是每个字段处理请求的地方。通常,这里我们会与数据库进行交互,例如使用 Mongoose 来获取数据。
Step 3: 定义GraphQL架构
最后,我们将定义整个 GraphQL 架构,结合我们的查询类型。
1 | const schema = new GraphQLSchema({ |
此时,我们已经定义了一个基本的 GraphQL 查询架构,可以在服务器中使用。
测试查询
接下来,您可以使用 GraphQL IDE(如 GraphiQL
或 Apollo Client
)来测试我们的查询。您可以发送以下查询以获取书籍列表:
1 | { |
或者可以使用 ID 查询特定的图书:
1 | { |
这将返回对应的图书数据。
总结
在本篇中,我们学习了如何定义 GraphQL 查询类型,并实现了一个图书管理系统的基本查询功能。我们定义了 BookType
和 RootQueryType
,并编写了对应的 resolve
方法以处理查询请求。
在下一篇文章中,我们将介绍如何定义图形查询中的变更类型,进一步增强我们的 API 功能。希望您在这次学习中获得了启发,继续探索 GraphQL 的深层次特性!
7 定义GraphQL架构之创建查询类型