如何在 Node.js 中实现 GraphQL 服务?

阅读时长 6 分钟读完

GraphQL 是一种查询语言,可以作为 REST API 的替代品。它允许客户端指定需要获取的数据,从而减少不必要的通信和数据传输。在前端领域,GraphQL 的重要性日益增长。本文将介绍如何在 Node.js 中实现GraphQL服务。

安装依赖

首先,需要安装 graphqlexpress-graphql 两个依赖。graphql 是 GraphQL 的核心库,express-graphql 提供了将 GraphQL 服务挂在 Express 应用上的中间件。可以通过以下命令进行安装。

创建 GraphQL Schema

在创建 GraphQL 服务之前,需要定义数据模型和查询结构。这可以通过 GraphQL Schema 来完成。Schema 是一个对数据模型进行描述的结构体,定义了数据模型中的类型、字段、查询、变异和订阅等内容。

下面是一个示例 Schema 的定义。

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

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

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

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

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

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

上述代码定义了 Book 数据类型,并定义了查询类型和变异类型。外部 API 的查询类型可以根据情况进行定义。注意其中的 resolve 函数,它是用于返回数据的函数。

创建 Express 应用和 GraphQL 服务

接下来,需要创建一个 Express 应用,并将 GraphQL 服务挂在上面。

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

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

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

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

graphqlHTTP 是 Express 应用中的 GraphQL 中间件,它需要传入 Schema 和其他选项。通过开启 graphiql 选项,可以启用 GraphiQL 工具,这是一个交互式的 GraphQL 开发环境。最后,启动 Express 应用即可。

查询数据

现在可以使用 GraphQL 来查询数据了。可以通过浏览器的地址栏或者 Postman 等工具来发起 HTTP 请求。

例如,以下是查询一本书的请求。

以下是查询多本书的请求。

以下是添加一本书的请求。

其中的查询语句可以在 GraphiQL 工具中编写和测试。

结论

本文介绍了如何在 Node.js 中实现 GraphQL 服务。通过定义 Schema 和创建 Express 应用,并使用 GraphQL 中间件来挂载服务,就可以通过查询、变异和订阅等方式来获取数据。GraphQL 提供了一种灵活、强大和高效的数据查询方式,可以让前端开发更加快捷和便利。

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

纠错
反馈