Node.js 中的 GraphQL 技术详解

阅读时长 6 分钟读完

GraphQL 是一种由 Facebook 开发的数据查询语言和运行时,它允许客户端定义自己需要的数据结构,而不是由服务器定义。GraphQL 可以用于任何语言和任何类型的应用程序,包括 Node.js。

本文将介绍 GraphQL 在 Node.js 中的使用方法和技术细节,包括 GraphQL 的基本概念、如何在 Node.js 中使用 GraphQL、GraphQL 的查询和变异、以及一些常见的 GraphQL 库和工具。

GraphQL 的基本概念

GraphQL 的核心概念包括:

  • Schema:用于定义数据类型和查询方法的结构。
  • Query:用于获取数据的请求。
  • Mutation:用于修改数据的请求。

在 GraphQL 中,Schema 是最重要的部分。Schema 定义了可用的数据类型和查询方法,以及它们之间的关系。GraphQL 中的每个查询和变异都必须符合 Schema 的规则。

如何在 Node.js 中使用 GraphQL

要在 Node.js 中使用 GraphQL,需要安装 Node.js 和 GraphQL 库。最常用的 GraphQL 库包括 Apollo、Express GraphQL 和 graphql-yoga。

安装 GraphQL 库

使用 npm 安装 GraphQL 库:

创建 GraphQL 服务器

创建一个新的文件 server.js 并输入以下代码:

-- -------------------- ---- -------
----- ------- - -------------------
----- ----------- - ---------------------------
----- - ----------- - - -------------------

-- -- ------
----- ------ - -------------
  ---- ----- -
    ------ ------
  -
---

-- -- --------
----- ---- - -
  ------ -- -- ------ -------
--

-- -- ------- ----
----- --- - ----------

-- -- ------- ---
------------------- -------------
  ------- -------
  ---------- -----
  --------- ----
----

-- -----
---------------- -- -- ---------------- ------ -- ---------------------------------
展开代码

在上面的代码中,我们首先定义了一个包含一个 hello 字段的查询类型。然后,我们定义了一个 Resolver,它将返回一个字符串 "Hello world!"。最后,我们创建了一个 Express 应用程序,并将 GraphQL 中间件添加到 /graphql 路径。graphiql 选项启用了 GraphiQL IDE,它是一个用于测试 GraphQL 查询的交互式工具。

查询数据

现在我们已经创建了一个 GraphQL 服务器,我们可以使用 GraphiQL IDE 来测试我们的查询。在浏览器中打开 http://localhost:4000/graphql,您应该会看到一个交互式的 GraphQL 界面。

在左侧的查询编辑器中输入以下查询:

然后按下 "运行" 按钮,您应该会在右侧看到以下结果:

这个查询告诉服务器返回 hello 字段的值,它应该是一个字符串 "Hello world!"。

修改数据

GraphQL 还支持变异,它们允许您修改数据。下面是一个修改数据的示例:

-- -------------------- ---- -------
----- ------- - -------------------
----- ----------- - ---------------------------
----- - ----------- - - -------------------

-- -- ------
----- ------ - -------------
  ---- ----- -
    ------ ------
  -

  ---- -------- -
    ------------------- -------- ------
  -
---

-- -- --------
----- ---- - -
  ------ -- -- ------ --------
  ----------- -- ------- -- -- -
    ------ -------- --- -- ------------
  -
--

-- -- ------- ----
----- --- - ----------

-- -- ------- ---
------------------- -------------
  ------- -------
  ---------- -----
  --------- ----
----

-- -----
---------------- -- -- ---------------- ------ -- ---------------------------------
展开代码

在上面的代码中,我们添加了一个名为 setMessage 的变异类型。这个变异将接受一个名为 message 的参数,并将其设置为一个字符串。在 Resolver 中,我们返回一个字符串,指示消息已设置为输入参数的值。

要测试这个变异,请在 GraphiQL 中输入以下查询:

按下 "运行" 按钮,您应该会在右侧看到以下结果:

这个变异告诉服务器将消息设置为 "Hello GraphQL!"。

常见的 GraphQL 库和工具

除了 Express GraphQL 和 Apollo 之外,还有许多其他的 GraphQL 库和工具可用于 Node.js。以下是一些常见的 GraphQL 库和工具:

  • graphql-yoga:一个简单的 GraphQL 服务器,它集成了 Express、Apollo Server、subscriptions-transport-ws 和 graphql-playground。
  • Prisma:一个开源的 ORM 和 GraphQL API 生成器,它可以轻松地将数据库连接到 GraphQL API 中。
  • Nexus:一个类型安全的 GraphQL 构建器,它提供了一种简单的方法来定义 GraphQL Schema 和 Resolver。
  • graphql-tools:一个用于构建和合并 GraphQL Schema 的工具集。

结论

GraphQL 是一种强大的数据查询语言和运行时,它可以用于任何类型的应用程序。在 Node.js 中使用 GraphQL 非常容易,只需安装 GraphQL 库并创建一个 GraphQL 服务器即可。通过使用 GraphQL,您可以轻松地定义查询和变异,并且可以通过使用常见的 GraphQL 库和工具来简化开发工作。

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

纠错
反馈

纠错反馈