使用 Express.js 构建 GraphQL 服务器

阅读时长 6 分钟读完

GraphQL是Facebook开发的一种用于API查询语言和运行时环境的开源规范。它可以使得客户端只能获取需要的数据而不需要进行多余的请求。本文将介绍如何使用Express.js构建GraphQL服务器,包括从初始步骤到最难的深层探究,同时提供一些示例代码,帮助读者更好地理解。

现代JavaScript开发环境

在开始使用Express.js之前,我们需要准备好现代的JavaScript开发环境。因此,我们建议使用Node.js运行时和npm作为包管理器。在这里,我们提供Node.js和npm的官方链接以及安装命令:

安装好Node.js和npm之后,我们可以开始使用Express.js构建GraphQL服务器了。

安装Express.js

在使用Express.js之前,我们需要安装它。可以使用以下命令安装它:

这将安装三个npm包,分别是:Express、GraphQL和Express-GraphQL。Express用于创建Web应用程序,GraphQL用于创建GraphQL服务器,而Express-GraphQL是Express框架的中间件,用于将GraphQL与Express应用程序相集成。

创建Express应用程序

在安装Express.js之后,我们现在可以创建我们的Express服务器应用程序了。我们可以使用Express应用程序生成器,也可以手动创建Express应用程序。在这里,我们用手动创建的方式介绍,可以使用下列命令创建一个新的Express应用程序:

这将创建一个新的文件夹my-graphql-server,并在其中创建一个新的package.json文件和一个node_modules目录,然后安装Express.js。

创建GraphQL服务器

创建GraphQL服务器需要以下步骤:

  1. 创建GraphQL schema
  2. 创建Express-GraphQL中间件
  3. 将Express服务器与中间件集成

创建GraphQL schema

GraphQL schema是定义GraphQL API的基本要素。它描述了所有可用查询,以及所有可用数据类型。在本例中,我们将定义一些基本的查询和数据类型。

my-graphql-server文件夹中,创建一个新文件schema.js,定义GraphQL schema。以下是一个示例schema:

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

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

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

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

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

在上面的代码中,我们首先定义了Date标量类型,然后定义了两个查询类型,包括一个获取单个用户的查询和一个获取所有用户的查询。最后,定义了User类型,表示User对象,包括其ID,名称,电子邮件地址以及朋友列表和创建时间。

创建Express-GraphQL中间件

my-graphql-server文件夹中,创建一个新文件server.js,定义一个GraphQL中间件,并将其添加到Express应用程序。以下是一个示例中间件:

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

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

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

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

在上面的代码中,我们创建了一个Express服务器,并将GraphQL中间件添加到其路径/graphql。在中间件的配置中,我们将GraphQL schema传递到中间件,并开启了GraphQL的交互式IDE(GraphiQL)。最后,我们将Express服务器监听在端口3000上。

将Express服务器与中间件集成

my-graphql-server文件夹中,创建一个新文件index.js,将Express应用程序与GraphQL中间件集成。以下是一个示例:

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

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

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

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

在上面的代码中,我们创建了一个Express服务器,并将GraphQL中间件添加到其路径/graphql。在中间件的配置中,我们将GraphQL schema传递到中间件,并开启了GraphQL的交互式IDE(GraphiQL)。最后,我们将Express服务器监听在端口3000上。

在GraphQL服务器中查询数据

现在,我们已经创建了GraphQL服务器,可以通过GraphiQL交互式IDE来查询数据。在浏览器中打开http://localhost:3000/graphql以进入GraphiQL。

在GraphiQL中,我们可以输入查询语句并获取与查询匹配的数据。例如,以下查询会返回所有用户的列表:

同样,以下查询将返回特定用户的详细信息(替换{id}为实际用户ID):

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

结论

在本文中,我们探讨了使用Express.js构建GraphQL服务器的全过程,并提供了详细步骤和示例代码。希望本文对大家学习和使用GraphQL有所帮助。

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

纠错
反馈