如何使用 Deno 实现 GraphQL 的服务端

阅读时长 4 分钟读完

什么是 Deno?

Deno 是一个现代化的 JavaScript 和 TypeScript 运行时,它由 Node.js 的创造者 Ryan Dahl 开发。Deno 的特点是安全、稳定、高效,并且无需使用 npm 来管理依赖。

GraphQL 简介

GraphQL 是一种新的 API 设计范式,它由 Facebook 创建。与 REST API 相比,GraphQL 具有更高的灵活性和可定制性,因此它在现代 Web 开发中得到了越来越广泛的使用。

GraphQL 的核心概念是模式和解析器。模式定义了 API 的数据模型和操作,而解析器则负责将查询与数据源相匹配。

使用 Deno 实现 GraphQL 服务端的步骤

在本文中,我们将演示如何使用 Deno 和 Oak 框架来实现 GraphQL 的服务端。我们将使用以下步骤:

  1. 安装 Deno 和 Oak:在终端输入以下命令:

    安装后,输入以下命令来检查 Deno 版本:

    Oak 是一个基于 Deno 构建的 Web 框架,它提供了一些有用的中间件和工具,以帮助我们构建 Web 应用程序。

    输入以下命令来安装 Oak:

  2. 创建 GraphQL 模式和解析器:在项目目录中创建一个名为 schema.ts 的文件,然后在其中定义 GraphQL 模式和解析器,如下所示:

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

    在这个例子中,我们定义了一个名为 "hello" 的查询,并返回了一个字符串 "Hello, GraphQL!"。

  3. 创建 GraphQL API:在项目目录中创建一个名为 server.ts 的文件,然后在其中创建一个 GraphQL API,如下所示:

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

    在这个例子中,我们使用 applyGraphQL 方法来创建 GraphQL 服务。然后我们使用 Oak 框架来启动服务,并监听 8080 端口。

  4. 运行应用程序:在终端中输入以下命令来启动应用程序:

    然后用浏览器访问 "http://localhost:8080/graphql",您应该能够看到 GraphQL Playground。在查询栏中输入以下查询:

    然后点击运行按钮,您应该能够看到以下输出:

总结

在本文中,我们演示了如何使用 Deno 和 Oak 框架来创建 GraphQL 的服务端。通过这个例子,您可以学习如何定义 GraphQL 模式和解析器,以及如何使用 Oak 框架来处理 GraphQL 请求,并构建一个完整的 GraphQL API。希望这篇文章对您有所帮助!

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

纠错
反馈