npm 包 graphql-typewriter 使用教程

阅读时长 8 分钟读完

前言

GraphQL 是现代化的 API 查询语言,它提供了一种更高效、更强大的数据传输方式,受到了广泛的欢迎。GraphQL-Typewriter 是一个 npm 包,它使得使用 GraphQL 更加容易和高效。它的主要目的是帮助开发人员快速创建和维护 GraphQL 带有 Typescript 定义的 API。

在本文中,我们将深入探讨如何使用 npm 包 graphql-typewriter 来实现 GraphQL API 的开发。

什么是 GraphQL-Typewriter?

GraphQL-Typewriter 是一个开源的 npm 包,它的主要功能是将基于 TypeScript 的 GraphQL api 定义文档化为可供浏览器和其他 IDE 请求的可传递数据。它还有这几个特点:

  • 自动创建 Typewriter 的 API 文档,且生成的文档结构与代码结构绑定;
  • 支持缓存;
  • 支持加载器;
  • 支持自定义插件;

安装

要安装 graphql-typewriter,可以使用 npm 命令:

使用

假设我们已经有一个 GraphQL API,并且我们已经用 TypeScript 编写了 API 的定义和实现,那么如何使用 graphql-typewriter 呢?

步骤一:在配置文件中添加 graphql-typewriter 插件

首先,我们需要在项目中添加一个 typewriter.yaml 配置文件。然后,在该文件中添加 graphql-typewriter 插件:

步骤二:生成类型定义文件

接下来,需要运行以下命令来生成类型定义文件:

运行此命令后,将会在你的项目中生成两个 .d.ts 文件:graphql-schema.tsgraphql-types.generated.ts。它们将包含用于 TypeScript 的 API 类型定义。

步骤三:导出 GraphQL Schema

在 Express.js 中,可以通过以下方式将 GraphQL schema 导出为 JSON 格式:

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

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

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

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

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

在以上代码中,我们使用 Node.js 中的 fs 模块将 schema.graphql 文件中的内容读取为字符串,用于构建 buildSchema 实例,然后通过 getSchema 获取 JSON 格式的 schema,并导出。

步骤四:添加 GraphQL API 的定义和实现

最后,我们需要在项目中添加 GraphQL API 的定义和实现。定义文件通常存储在 .graphql 文件中。在定义文件中,我们会定义 Query 和 Mutation 类型以及它们的字段。

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

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

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

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

在代码实现中,我们需要导入 TypeScript 的接口和需要实现的 resolver 函数,并通过 addResolvers 函数将它们链接起来。

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

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

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

当我们运行服务时,客户端发送的 GraphQL 查询将由 graphql-typewriter 自动生成处理程序函数。这些函数将会负责查询的解析、数据获取等逻辑。

示例代码

以下是一个完整的示例代码:

schema.graphql

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

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

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

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

index.ts

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

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

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

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

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

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

resolvers.ts

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

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

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

models/User.ts

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

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

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

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

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

结论

通过使用 graphql-typewriter,我们可以更加轻松地创建和维护 GraphQL API。此工具提供了自动生成文档、支持缓存和加载器以及支持自定义插件的各种特性,从而使得我们可以更加高效地开发 GraphQL API。同时,由于它是一个 npm 包,因此我们也可以更加方便地在不同的项目中重复使用其代码。

附录:

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

纠错
反馈