使用 Deno 开发 GraphQL 服务器的最佳实践

阅读时长 6 分钟读完

GraphQL 是一种使用查询语言来从服务器获取数据的 API 规范。使用 GraphQL,前端开发人员可以非常容易地获取所需的数据,而无需去请求多个不同的 RESTful API 接口。目前,GraphQL 在前端开发中越来越受欢迎,而 Deno 作为一个类似于 Node.js 的 JavaScript 和 TypeScript 运行时环境,也提供了便利的功能以便使用 GraphQL 来编写服务器端应用程序。本文将讲解使用 Deno 开发 GraphQL 服务器的最佳实践。

安装 Deno 和相关依赖

在使用 Deno 开发 GraphQL 服务器之前,我们需要先安装 Deno 和相关依赖。你可以访问 Deno 的官方网站 (https://deno.land/) 下载并安装 Deno。同时,我们还需要安装一些 Deno 的模块,包括如下模块:

  • oak:一个相对于 Koa 框架的使用 Deno 编写的 Web 应用框架。
  • graphql:一个可以让我们定义 GraphQL schema 和 resolver 方法的 JavaScript 模块。

你可以使用以下命令来进行安装:

定义 GraphQL schema

在使用 Deno 开发 GraphQL 服务器时,我们需要首先定义我们的 GraphQL schema。在 GraphQL schema 中,我们定义了我们的数据模型以及与这些数据模型交互的方法。我们使用 graphql 模块中的 GraphQLSchemaGraphQLObjectType 来定义我们的 schema。

下面是一个示例 schema 声明:

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

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

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

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

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

在上面的示例代码中,我们定义了一个名为 User 的对象类型,以及一个名为 Query 和名为 Mutation 的对象类型,这两者用来定义查询和变异方法。我们使用 GraphQLIntGraphQLString 等类型来定义属性的数据类型。

定义 GraphQL resolver

在 GraphQL schema 中定义的方法必须要有相应的 resolver 函数来处理这些请求。我们可以在 QueryTypeMutationType 中的函数中添加 resolver 函数。

下面是一个示例 resolver 函数:

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

在上面的示例中,我们返回了一个 users 方法和一个 addUser 方法。这些方法接受相关参数,并使用它们来处理请求。返回结果的格式应该与相应 GraphQL 查询的格式相对应。

使用 Deno 和 Oak 编写 GraphQL API

在定义好我们的 schema 和 resolver 之后,我们可以使用 Deno 和 Oak 来编写我们的 GraphQL API。

下面是一个示例 API 声明:

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

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

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

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

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

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

上面的示例中,我们使用 applyGraphQL() 方法来创建 GraphQL 服务。在服务的挂载路径和 schema 和 resolver 必须要正确匹配。当服务启动后,我们可以在浏览器中访问 http://localhost:8000/graphql 查看是否运行成功。

总结

本文简要介绍了使用 Deno 开发 GraphQL 服务器的最佳实践,包括如何定义 GraphQL schema 和 resolver、使用 Deno 和 Oak 来编写 GraphQL API。希望读者们能够通过本文的讲解了解有关使用 Deno 开发 GraphQL 服务器的基础知识。

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

纠错
反馈