如何在 Deno 中实现 GraphQL 服务器

GraphQL 是一种用于 API 的查询语言,它提供了一种更高效、强大、灵活和可伸缩的方式来构建 API。Deno 是一个新兴的 JavaScript 和 TypeScript 运行时,它提供了一种安全的、现代化的开发环境,旨在成为 Node.js 的替代品。在本文中,我们将介绍如何在 Deno 中实现 GraphQL 服务器。

安装 Deno

在开始之前,您需要安装 Deno。您可以从 Deno 的官方网站(https://deno.land/)下载和安装 Deno。

安装 Oak

Oak 是一个基于中间件的 Web 框架,它可以帮助我们构建 Web 应用程序。在 Deno 中,我们可以使用 Oak 来构建 GraphQL 服务器。您可以使用以下命令在 Deno 中安装 Oak:

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

安装 GraphQL

GraphQL 是一个用于 API 的查询语言,它提供了一种更高效、强大、灵活和可伸缩的方式来构建 API。在 Deno 中,我们可以使用以下命令安装 GraphQL:

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

创建 GraphQL 服务器

现在我们已经安装了必要的软件包,我们可以开始创建 GraphQL 服务器了。以下是一个简单的示例,它展示了如何在 Deno 中使用 Oak 和 GraphQL 创建服务器:

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

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

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

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

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

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

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

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

在上面的示例中,我们首先定义了一个 GraphQL schema,该 schema 包含一个名为 Query 的对象和一个名为 hello 的字段。然后,我们使用 makeExecutableSchema 函数将 schema 和 resolvers 组合在一起创建一个可执行的 GraphQL schema。接下来,我们创建一个 Application 和一个 Router,并将 graphqlHTTP 中间件添加到路由上。最后,我们使用 listen 函数启动服务器。

测试 GraphQL 服务器

现在我们已经创建了 GraphQL 服务器,我们可以使用 GraphQL 客户端测试它。以下是一个简单的示例,它展示了如何使用 curl 命令测试 GraphQL 服务器:

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

在上面的示例中,我们使用 curl 命令向服务器发送一个 POST 请求,该请求包含一个名为 query 的字段,该字段包含一个 GraphQL 查询。服务器将响应一个 JSON 对象,该对象包含查询结果。

结论

在本文中,我们介绍了如何在 Deno 中实现 GraphQL 服务器。我们首先安装了必要的软件包,然后创建了一个简单的 GraphQL 服务器,最后使用 GraphQL 客户端测试了服务器。通过本文,您应该能够开始在 Deno 中构建更复杂的 GraphQL 服务器,并将其用于实际项目中。

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