Deno 如何使用 GraphQL 构建 API

阅读时长 5 分钟读完

GraphQL 是一种新的 Web API 查询语言,它的目标是用更少的数据传输完成复杂的数据库查询操作。Deno 是一种新的运行时环境,它专为 JavaScript 和 TypeScript 设计,它解决了 Node.js 中存在的一些问题,例如模块管理、安全性等。

在本文中,我们将讨论如何在 Deno 中使用 GraphQL 构建 API。

安装和配置 Deno

Deno 可以通过以下命令进行安装:

安装完成后,我们还需要设置环境变量:

安装和配置 GraphQL

首先,我们需要安装以下依赖项:

这里,我们使用 Oak 框架作为 Web 服务器,使用 oak_graphql 库来支持 GraphQL 查询。我们还使用 graphql-tools 来创建 GraphQL 模式,以及 dotenv 库来管理环境变量。

现在,我们需要配置 GraphQL 以便可以使用它来构建 API:

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

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

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

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

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

我们首先定义了我们的 GraphQL 模式,其中包含两个类型:Person 和 Query,以及一个 mutation 类型。Person 类型表示一个人,Query 类型表示从数据库中获取指定 ID 的人,mutation 类型表示往数据库中添加一条人的信息。我们还定义了 resolvers,用于处理相应的逻辑。最后,我们使用 makeExecutableSchema 方法创建了一个 GraphQL 模式。

集成到 Oak

现在我们需要使用 oak-graphql 将 GraphQL 添加到 Oak 应用程序中:

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

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

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

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

首先,我们创建了一个 Oak 应用程序。然后,我们使用 applyGraphQL 方法来创建 GraphQL 服务,并将其路由和方法添加到应用程序中。最后,我们启动服务器。

测试

我们可以使用 GraphiQL 来测试我们的 API。

在 GraphiQL 中,我们可以通过类似以下的查询获取数据:

我们也可以使用类似以下的 mutation 来添加一条记录:

总结

在本文中,我们介绍了如何使用 Deno 和 GraphQL 构建 API。我们首先安装和配置了 Deno,然后安装和配置了 GraphQL。然后,我们将 GraphQL 集成到 Oak 应用程序中,最后通过 GraphiQL 与 API 进行交互。

GraphQL 提供了一种简洁而强大的途径来构建 API,而 Deno 则可以提供更好的安全性和模块管理。这两者结合起来,可以提供更强大、更可靠的 Web API 服务。

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

纠错
反馈