如何使用 Deno 来实现 GraphQL 接口?

阅读时长 7 分钟读完

前言

GraphQL 是一种用于 API 的查询语言,它与传统的 REST API 相比有很多的优势。Deno 是一个新的 JavaScript 运行环境,与 Node.js 相比具有更好的安全性和更好的模块化和包管理系统。在本文中,我们将介绍如何使用 Deno 来实现 GraphQL 接口。

安装 Deno

要使用 Deno,我们需要先安装它。在 Windows 和 macOS 上,我们可以使用 Shell 或 PowerShell 来运行以下命令:

在 Linux 上,我们使用以下命令:

安装完成后,我们可以在终端中输入 deno 来测试 Deno 是否安装成功。

了解 GraphQL

在我们开始实现 GraphQL 接口之前,我们需要了解一些 GraphQL 的基础知识。GraphQL 是一种用于 API 的查询语言,它不同于传统的 REST API。在 GraphQL 中,客户端可以通过发送查询语句来获取它所需要的数据,而不是从服务器上获取所有的数据并在客户端上进行筛选和整理。

例如,下面是一个 GraphQL 查询语句:

这个查询语句表明客户端需要获取 id 为 1 的用户的姓名和邮箱。

安装依赖

在我们开始编写代码之前,我们需要安装一些必要的依赖项。我们使用 deno.graphql 作为 GraphQL 的库,使用 deno_mysql 作为 MySQL 的库,使用 oak 作为我们的 HTTP 服务器。我们可以通过以下命令来安装这些依赖项:

编写代码

首先,我们需要初始化我们的 Oak 应用程序。我们可以使用以下代码来创建我们的应用程序:

接下来,我们需要定义我们的 GraphQL 中的类型和解析器。在本例中,我们将从 MySQL 数据库中获取用户的数据。我们可以使用以下代码定义我们的 GraphQL 类型和解析器:

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

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

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

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

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

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

在代码中,我们使用 gql 函数来定义 GraphQL 的类型和解析器。我们定义了一个 User 类型和一个 Query 类型,Query 类型包含了一个 user 查询字段,该查询字段需要一个 id 参数,并返回一个 User 类型。

在解析器中,我们连接到 MySQL 数据库,并执行一个查询,然后将结果转换为我们需要的 User 类型。请注意,我们在查询中使用了参数绑定,以防止 SQL 注入攻击。

最后,我们将类型和解析器传递给 makeExecutableSchema 函数,以生成一个可执行的 GraphQL 模式。

现在我们已经定义了我们的 GraphQL 类型和解析器,我们需要将它们添加到我们的 Oak 应用程序中,以便我们可以通过 HTTP 访问它们。我们可以使用以下代码将 GraphQL 添加到我们的应用程序中:

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

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

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

在代码中,我们将 applyGraphQL 函数添加到我们的路由器中,并将其绑定到 "/graphql" 路径上。我们在 applyGraphQL 函数中传递了一个包含 schema 的选项对象,这将使它使用我们定义的 GraphQL 模式作为我们的查询处理程序。

运行代码

现在我们已经写完了我们的 Deno GraphQL 应用程序,我们可以通过以下命令来运行它:

现在我们已经成功地使用 Deno 来实现了一个 GraphQL 接口!我们可以使用以下命令来测试我们的 GraphQL API:

总结

在本文中,我们了解了如何使用 Deno 来实现 GraphQL 接口。我们安装了必要的依赖项,了解了 GraphQL 的基本知识,并编写了一个使用 MySQL 的 GraphQL 解析器。我们还初始化了一个 Oak 应用程序,并将 GraphQL 添加到应用程序中。最后,我们运行了我们的代码并测试了我们的 GraphQL API。这个例子仅仅是一个开始,你可以通过自己的想象力和创造力来实现更多有趣的功能。

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

纠错
反馈