如何在 Express.js 应用中集成 GraphQL

在前端领域,GraphQL 作为一种 API 查询语言,其优秀的设计和易用性在近些年来受到越来越多的关注。相比于传统的 RESTful API,GraphQL 更加灵活和高效,而且能够减少前后端接口定义的重复工作。作为一名前端开发者,学习和应用 GraphQL 已经成为了必备的技能之一。

本文将介绍如何在 Express.js 应用中集成 GraphQL,为读者提供详细的学习和指导意义,并提供示例代码来帮助读者更好地理解和应用。

准备工作

在开始集成 GraphQL 之前,我们需要先安装必要的依赖以及配置环境。首先,我们需要安装 expressgraphql

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

我们还需要安装一些可选的依赖,如 express-graphqlgraphql-toolsexpress-graphql 是一个 Express.js 的中间件,能够方便地在 Express.js 应用中集成 GraphQL。graphql-tools 则提供了一系列工具函数,如模式定义和实现的方法,供我们创建 GraphQL 服务时使用。

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

创建 GraphQL Schema

在开始创建 GraphQL 服务之前,我们需要先定义一个 GraphQL Schema。GraphQL Schema 定义了可用的查询类型、字段、参数等,以及它们之间的关系。

以下是一个简单的 GraphQL Schema 定义,定义了 hello 查询和返回值类型为字符串。

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

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

此外,我们还需要定义解析器来实现查询。以下是一个简单的 hello 解析器实现,它只需要返回一个 "Hello, world!" 字符串。

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

集成 GraphQL 到 Express.js 应用中

完成以上准备工作之后,我们就可以将 GraphQL 集成到我们的 Express.js 应用中了。我们可以通过 express-graphql 中间件来实现这一目的。在验证用户身份后,我们只需要将 express-graphql 中间件添加到我们的应用程序中即可。

以下是一个完整的 Express.js 应用程序的示例,其中包含 GraphQL Schema 和解析器的定义,以及 GraphQL 中间件:

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

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

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

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

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

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

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

运行以上代码后,我们就可以在 http://localhost:8080/graphql 上访问 GraphQL IDE 来测试我们的接口。在 GraphQL IDE 中,我们应该能够看到如下的 hello 请求和响应:

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

结论

本文介绍了如何在 Express.js 应用中集成 GraphQL,其中重点介绍了 GraphQL Schema 的定义和解析器的实现。我们还学习了如何使用 express-graphql 中间件将 GraphQL 集成到 Express.js 应用中。在学习本文之后,读者应该已经掌握了 GraphQL 的基本概念和应用技能,并能够在自己的应用程序中成功集成 GraphQL。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/673456780bc820c5824878ec