如何使用 Deno 实现 GraphQL 服务?

GraphQL 是一种跨平台的查询语言,它建立在强类型系统上,可以帮助开发人员快速构建功能强大的 API。Deno 是一个新兴的 JavaScript 运行时,它通过内置的安全性和一组有用的功能来提高开发人员的生产力。在本文中,我们将探讨如何使用 Deno 实现 GraphQL 服务。

首先,安装 Deno

如果您还没有安装 Deno,可以在 Deno 官方网站 上下载适用于您操作系统的安装包。

安装依赖库

我们将使用一些依赖库来帮助我们实现 GraphQL 服务。您可以在终端中使用以下命令来安装这些依赖库。

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

这些依赖库包括 Oak、Denodb 和 dotenv。Oak 是一个 Web 框架,Denodb 是一个轻量级的关系数据库 ORM,而 dotenv 可以从 .env 文件中读取环境变量。

创建 GraphQL API

现在,我们可以开始创建我们的 GraphQL API 了。在首先,我们需要在终端中使用以下命令来初始化 Deno 项目:

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

然后,我们将在项目的根目录中创建一个 server.ts 文件,并开始将我们的 API 配置好。在 server.ts 文件中,我们将首先导入必要的依赖库。

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

接下来,我们需要配置我们的数据库连接。首先,我们将定义一个 Todo 模型,用作我们的示例数据。

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

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

我们还需要定义一个初始化数据库连接的函数,以便在 API 启动时连接到数据库。

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

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

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

我们将在 API 的初始化函数中调用 initDb() 函数,以确保我们的 API 启动时已连接到数据库。

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

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

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

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

现在,我们可以将 GraphQL API 与我们 的 Oak 应用程序集成。我们将使用 GraphQL.js 构建 GraphQL API,我们可以从 deno.land/x/deno_graphql 下载它。

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

接下来,我们可以开始编写我们的 GraphQL API。我们将创建一个 TodoList 的 GraphQL 类型,它将是一个包含 Todo 的列表的对象。

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

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

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

我们需要为每个新类型定义一个解析器。在我们的情况下,我们的解析器将是从数据库中检索数据的函数。

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

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

最后,我们需要将我们的 GraphQL API 附加到我们的 Oak 应用程序中。我们将使用路由器来指定我们的 API 路径,然后我们将使用 use() 方法将 GraphQL API 附加到 express 应用程序。最终的 server.ts 文件应包括以下内容:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

总结

在本文中,我们探讨了如何使用 Deno 在 Oak 框架中构建 GraphQL API。我们看到,Denodb 和 dotenv 这些依赖库可以使我们更容易地连接到数据库和读取环境变量。借助 GraphQL.js,我们可以使用更直观的方式定义 API 的模式,并在需要时查找数据。这个简单的例子是如何在 Deno 中构建 GraphQL API 的入门指南,您可以通过扩展查询和模式来扩展此 API,以适应您的应用程序需求。

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