HapiJS 的 GraphQL 插件

阅读时长 7 分钟读完

GraphQL 是一种由 Facebook 开发的查询语言,其与 RESTful API 相比具有更好的灵活性和可扩展性。而 HapiJS 是一个优秀的 Node.js 框架,它提供了基础设施和工具来构建 Web 应用程序。本文将介绍 HapiJS 的 GraphQL 插件,以及如何使用它来构建高效的 Web 服务。

安装 HapiJS 的 GraphQL 插件

在开始之前,在你的计算机上安装 Node.js 和 npm 是必须的。接下来,执行以下命令来安装并引入 HapiJS 和 GraphQL 插件:

创建服务器和 GraphQL 插件

我们需要首先创建 HapiJS 服务器和 GraphQL 插件。在启动服务器之前,我们需要将插件引入我们的服务中。插件来源于 npm 包,我们可以使用 server.register 方法进行插件注册:

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

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

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

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

在这个例子中,我们将 GraphQL 插件注册到服务器中,目标是将这个插件应用到 '/graphql' 端点上,而我们传递了一个 GraphQL schema 作为 graphqlOptions 的选填项。

编写 GraphQL Schema

GraphQL Schema 是唯一的一个重要的组成部分,它包含了你的服务器可以查询的所有数据类型和相关信息。在下面的示例中,描述了如何定义 PersonCompany 数据类型以及如何使用 GraphQL 的 listresolve 来查询列表:

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

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

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

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

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

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

在这个例子中,PersonCompany 数据类型被定义了。这些数据类型包含对传递ID值查询的字段,包括关联该类型的数据。比如在 Person 类型中,company 字段被定义为一个对象类型。我们还定义了一个 list 类型,并用 resolve 方法返回相应的查询数据。

测试 GraphQL 插件

完成了我们的 HapiJS 和 GraphQL 配置之后,我们就可以使用 GraphQL 开发者工具来测试服务。

首先,在浏览器中输入 http://localhost:4000/graphql 来进入 GraphQL 查询界面。在界面中输入以下查询语句:

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

这会返回全局查询结果,并且将 firstName, lastName, 和 company 字段包含在查询中。你可以看到,GraphQL 会返回指定的数据类型,包括 employees 和 company data。

进一步学习 GraphQL

GraphQL 拥有强大的查询功能,而且其语言具有一致性和可扩展性。如果你想深入学习 GraphQL,GraphQL 官方网站提供了详细的文档和教程。同时,也有一些开源的实现和框架,如 Apollo,Relay,Graphcool 等,可以帮助你更快地构建高效的 Web 服务。

总结

HapiJS 的 GraphQL 插件是提供了高扩展性的最佳选择之一。它提供了易于使用的 GraphQL 查询语言,以及 HapiJS 框架的灵活性和可扩展性。通过自定义的 Scalable Schema,你可以构建和访问你的 Web 服务数据。在本文中,我们介绍了 HapiJS 和 GraphQL 的基础知识,以及如何使用 GraphQL 插件来创建一个基于 HapiJS 的 GraphQL 服务器。

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

纠错
反馈