使用Express和express-graphql构建GraphQL服务器

阅读时长 5 分钟读完

GraphQL是一种查询语言和运行时,可以让客户端指定需要的数据,从而避免了传统REST API中经常遇到的“过度获取”和“欠获取”的问题。使用GraphQL可以更好地控制请求和响应数据的负载,提高API性能和可维护性。

在本文中,我们将介绍如何使用npm包express-graphql来构建一个基本的GraphQL服务器,并通过示例代码演示其用法。

步骤1:创建项目并安装依赖项

首先,我们需要创建一个新的Node.js项目。在命令行中执行以下命令:

接下来,我们需要安装所需的依赖项。打开命令行并执行以下命令:

这将安装Express框架、express-graphql和GraphQL库。

步骤2:编写GraphQL模式和解析器

接下来,我们需要编写GraphQL Schema和解析器,以便客户端可以查询数据。我们将创建一个简单的books列表,其中每本书都有标题和作者属性。

在项目根目录下创建一个名为schema.js的文件,并添加以下内容:

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

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

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

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

这个文件定义了两个GraphQL对象类型:Book和RootQuery。我们在RootQuery中定义了一个books字段,它返回一个包含三本书的数组。

接下来,在项目根目录下创建一个名为resolver.js的文件,并添加以下内容:

这个文件包含了一个名为Query的对象,其中包含了books解析器函数。这个函数返回一个包含所有书籍的数组。

步骤3:创建Express服务器并将GraphQL绑定到路由

现在我们已经编写了GraphQL Schema和解析器,我们需要将其绑定到一个Express服务器上。在项目根目录下创建一个名为server.js的文件,并添加以下内容:

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

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

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

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

这个文件创建了一个Express服务器,并将express-graphql中间件绑定到路由“/graphql”上。中间件接受一个包含GraphQL Schema和解析器的选项对象。

步骤4:测试GraphQL服务器

现在我们已经完成了所有的设置,让我们测试一下我们的GraphQL服务器。运行以下命令启动服务器:

然后,在浏览器中打开http://localhost:4000/graphql,您将看到GraphQL Playground界面。在左侧边栏中输入以下查询:

纠错
反馈