在网页应用中添加 GraphQL 路由

· 约 6 分钟读完

GraphQL 是一种用于 API 的查询语言,可替代 REST API,并据此构建服务器端。它具有类型系统、查询语言、解析器等诸多特性,能够更方便地进行数据查询和操作。在前端方面,我们可以利用 GraphQL 路由来实现更优雅的数据请求和处理。

本文将介绍如何在网页应用中添加 GraphQL 路由。它将涵盖以下四个方面:

  1. 什么是 GraphQL 路由
  2. 设置 GraphQL 服务器
  3. 图形化请求与应答
  4. 代码示例

什么是 GraphQL 路由

GraphQL 路由是一种将 GraphQL API 作为 RESTful API 之一的方式。之所以称之为路由,是因为我们可以使用不同的路径(或端点)来进行不同的查询操作。

接口路径通常是由表达式和变量组成的。例如,我们可以在 URL 中使用一个 ?query= 参数,将查询当前用户信息的 GraphQL 查询字符串添加到 URL 中。

设置 GraphQL 服务器

安装依赖项

使用 GraphQL,首先需要进行安装。其中用于构建 GraphQL API 的库分别是 graphql 和 express-graphql。我们可以使用以下 npm 命令来安装它们:

导入依赖项

在设置 GraphQL 服务器之前,需要导入以下依赖项:

创建 schema

接下来,需要创建 schema。它是一种描述如何组织和操作数据的方式。我们可以使用 GraphQL 的静态类型系统来定义一个 schema。以下是一个简单的 schema 示例:

在上述代码中,我们定义了一个 Query 类型,它包含了两个字段:user 和 users。user 字段具有参数 id,它将返回类型为 User 的对象。users 返回一个由 User 类型组成的数组。

解析器

接下来,我们需要创建与 schema 相对应的解析器。这些解析器在查询时将被调用。我们可以使用以下代码来创建解析器:

在上述代码中,我们定义了一个 root 对象,该对象包含解析器函数,它们用于执行 GraphQL 操作。在本例中,我们创建了两个解析器函数 user 和 users。

创建服务器

最后,我们需要创建 GraphQL 服务器。以下是一个简单的服务器示例:

在上述代码中,我们创建一个 express 应用程序,并将其与 GraphQL 中间件连接。schema 变量用于指定我们的 schema。rootValue 变量用于指定与 schema 相对应的解析器。graphiql 标志用于启用图形化请求与应答界面。

图形化请求与应答

在设置 GraphQL 服务器之后,我们可以使用图形化请求与应答接口测试和分析我们的 GraphQL API。

默认情况下,express-graphql 库提供了一个网页图形化请求与应答插件,它可以在 /graphql 路径上访问。我们只需要将 graphiql 变量设置为 true 即可启用它。

通过图形化请求与应答,我们可以轻松试验无样式的查询、获取类型定义信息并开展演练。

代码示例

以下是完整的实现 GraphQL 路由的示例代码:

在上述代码中,我们创建了一个简单的用户列表,它包含两个字段:id 和 name。我们通过创建一个类型为 User 的 GraphQL schema 来描述用户列表的结构。同时,使用 buildSchema() 构建 schema 对象。

接下来,我们创建了两个查询解析器函数 user 和 users。解析器函数用于查询一个特定的用户或返回所有的用户。单个用户查询需要用户 id 作为参数。

最后,我们创建了一个 express 应用程序,并将其与 GraphQL 中间件连接。该中间件用于定义 GraphQL schema 和解析器,以及启用图形化请求与应答接口。

欢迎各位开发者和爱好者尝试本示例代码,并体验 GraphQL API 的优雅和高效。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67cfc579e46428fe9ebb9136