50 行代码实现 GraphQL API

阅读时长 6 分钟读完

GraphQL 是一个用于 API 设计的查询语言,它使得客户端可以精确地指定它需要哪些数据,从而提高了 API 的效率和可扩展性。本文将介绍如何用 50 行代码实现一个基本的 GraphQL API。

安装依赖

我们将使用 Node.js 和 Express.js 来创建服务器,并使用 graphql、express-graphql 和 faker 这三个包来实现 GraphQL API。先通过 npm 进行安装。

创建模型

首先,我们需要定义我们的模型。在这个例子中,我们将创建一个 User 对象,它有 id、name 和 email 三个属性。

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

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

创建查询

接下来,我们需要定义我们的查询。我们将使用 GraphQL 的 query 和 mutation 来定义我们的查询和修改操作。

在这个例子中,我们将创建三个查询:getAllUsers、getUserById 和 getUserByName。getAllUsers 将返回所有用户,getUserById 将根据 id 返回指定的用户,getUserByName 将根据 name 返回指定的用户。

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

创建修改

除了查询,我们还需要定义我们的修改。在这个例子中,我们将定义一个 addUser mutation,它将接收一个 name 和 email 参数,并添加一个新的用户到我们的用户列表中。

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

创建 Schema

在创建完我们的模型、查询和修改之后,我们需要将它们组合成一个 Schema。我们将使用 GraphQLSchema 来完成这个工作。

创建服务器

最后,我们将使用 Express.js 创建一个服务器,我们将在服务器中定义我们的 GraphQL API。

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

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

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

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

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

测试

我们已经完成了我们的 GraphQL API,接下来我们可以使用 GraphiQL 工具来测试它。

GraphiQL 是一个交互式的查询开发环境,它可以帮助我们自动生成查询和变更的语法,并自动填写必需的参数和字段。

在浏览器中打开 http://localhost:4000/graphql,就可以看到 GraphiQL 工具了。我们可以在左侧的输入框中输入我们的查询或变更,右侧的窗口将显示我们的结果。例如,我们可以尝试输入下面的查询:

这个查询将返回我们所有的用户,包括 id、name 和 email 三个属性。

总结

在本文中,我们介绍了如何使用 Node.js、Express.js、GraphQL 和 faker 实现一个基本的 GraphQL API。我们定义了我们的模型、查询和变更,并将它们组合成一个 Schema,在 Express.js 应用程序中使用 graphqlHTTP 中间件,就可以实现我们的 GraphQL API。这个例子只是一个起点,我们可以根据我们的需求进一步扩展我们的 API。

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

纠错
反馈