在 Node.js 中使用 GraphQL(Using GraphQL in Node.js)

阅读时长 5 分钟读完

如果你是一名 Web 开发者,你肯定不会陌生于 RESTful API,它是当前 Web 应用开发中最常用的 API 架构方式。但是,最近出现了一种新的 API 架构方式 - GraphQL。GraphQL 是由 Facebook 发布的一种数据查询语言,相比 RESTful API 具有更好的灵活性、可扩展性和可维护性。本文将介绍在 Node.js 中使用 GraphQL 的方法。

GraphQL 的基本原理

GraphQL 的本质是一种查询语言和运行环境。它不像 RESTful API 那样,将数据暴露在 URL 上,而是通过一个统一的 URL (通常为 /graphql)将请求发送到服务器,让服务器根据请求的查询参数返回数据。具体来说,GraphQL 有以下特点:

  1. 面向查询,也就是说,客户端使用 GraphQL 只需要提供其所需要的数据字段和类型就可以得到想要的数据。GraphQL 会根据客户端提供的信息生成相应的查询语句并执行。

  2. 一切都是类型,GraphQL 会在服务端定义一种被称为“schema”的结构,该结构可以定义查询时可以访问的数据类型、输入类型和返回类型等。

  3. 节点之间的关联性更明确,如果客户端需要获取两个实体之间的关系,那么客户端只需要指定两个实体之间的关系即可,而不需要像 RESTful API 那样通过 URL 参数拼接来传递关系。

在 Node.js 中使用 GraphQL 可以借助于 GraphQL.js,它是由 Facebook 维护的官方底层库。GraphQL.js 支持服务器端的 schema 定义和解析 GraphQL 查询语句。下面是一个基本的示例:

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

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

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

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

在这个示例中,我们定义了一个简单的 schema,它有一个 Query 类型,其中仅包含一个 hello 字段,它返回字符串类型。root 对象是构建 schema 时声明的响应函数,该响应函数由客户端请求启动。我们使用 graphql 函数将查询字符串('{ hello }')传递给服务器来响应查询。执行结果会是一个包含查询返回的数据的 promise。在这个简单的示例中,我们可以看到我们得到了响应的 hello 信息。

具体的原理和使用方式,可以查看 GraphQL.js 的指南和 API 文档。

将 GraphQL 集成到 Node.js 应用程序中

下面是一个更完整的示例来说明如何使用 GraphQL 在 Node.js 应用程序中返回数据。

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

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

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

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

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

在这个示例中,我们使用 Express 和 express-graphql 来处理 GraphQL 请求。我们首先定义了一个简单的 schema,该 schema 具有 4 个 Query 类型的字段,hello,quoteOfTheDay,random 和 rollThreeDice。接着,我们定义了一个包含 4 个查询的 root 对象。这些查询可以返回简单的字符串、随机数以及一个数组,并且按需提供给客户端请求。最后,我们使用 Express 并使用 graphqlHTTP 中间件提供了一个 GraphQL 服务。默认情况下,graphiql 选项设置为 true,因此我们将获得一个可互动的调试功能的 web 界面。您可以通过向 http://localhost:4000/graphql 发送 POST 请求来测试该应用程序,并执行 GraphQL 查询文本。

结论

GraphQL 不仅是现代 Web 应用程序开发的趋势,还可以提高 Web 应用程序的效率和可维护性。在 Node.js 中使用 GraphQL 可以借助于 GraphQL.js 库,该库为您提供了使用 GraphQL 的必要功能。通过遵循这里所展示的几个具体示例,您可以在自己的应用程序中轻松地集成 GraphQL API。

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

纠错
反馈