在 Node.js 中使用 TypeScript 开发 GraphQL API

阅读时长 6 分钟读完

GraphQL 是一种用于 API 的查询语言,它可以让开发者更精确、高效地获取数据。而 TypeScript 则是一种 JavaScript 的超集,它在静态类型检查和代码提示方面具有明显优势。本文将介绍如何使用 TypeScript 来开发 GraphQL API。

环境配置

在开始之前,我们需要先准备好开发环境。首先,需要安装 Node.js 和 npm,并创建一个新的项目目录。

然后,我们需要安装一些必要的依赖:

其中,graphql 是 GraphQL 服务器的核心库,express 是一个流行的 Node.js 框架,express-graphqlapollo-server-express 是两种常用的 GraphQL 服务器实现,@types/graphql@types/express@types/express-graphql@types/apollo-server-express 是 TypeScript 的类型文件,typescriptts-node 则是 TypeScript 编译器和运行时工具。

完成依赖安装后,我们可以创建一个 TypeScript 配置文件 tsconfig.json

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

该配置文件中,我们将编译目标设置为 ES6,模块系统设置为 CommonJS,输出目录设置为 dist,启用了 TypeScript 的严格模式以及模块解析模式,开启了 ES 模块与 CommonJS 模块之间的互操作性,并开启了源映射。

接下来,我们可以创建一个 src 目录,并在其中创建一个 app.ts 文件作为入口点:

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

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

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

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

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

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

在该文件中,我们使用了 apollo-server-expressexpress-graphql 库创建了一个 GraphQL 服务器,并使用了 express 库创建了一个 Web 服务器,最后将 GraphQL 服务器和 Web 服务器整合在一起,并监听了一个端口号。

值得注意的是,我们通过 schema 参数将一个 GraphQL schema 对象传递给了 ApolloServergraphqlHTTP,这个 schema 对象包含了所有可用的查询、变异和订阅操作。

创建 GraphQL schema

一个简单的 GraphQL schema 由三部分组成:类型定义、查询类型和查询字段。定义这些内容可以使用 graphql 库提供的语法。

首先,我们需要导入必要的类型和函数:

然后,我们可以定义一个 Query 类型:

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

在上述代码中,我们创建了一个名为 Query 的 GraphQL object 类型,并为其添加了一个 hello 字段,该字段的类型为 GraphQLString,参数为一个 name 字符串,返回值为一个问候语,并且必须存在一个 name 参数。

接下来,我们可以创建并导出一个新的 GraphQL schema 对象:

运行应用程序

通过 TypeScript 编译器编译所有 TypeScript 代码:

然后,在控制台中输入以下命令启动 Web 服务器:

现在,我们可以在浏览器中打开 http://localhost:4000/graphql,并尝试运行一个查询:

这应该会输出如下结果:

恭喜,你现在已经成功创建了一个基于 TypeScript 的 GraphQL API!

总结

本文介绍了如何使用 TypeScript 和 GraphQL 来构建一个 Web 应用程序,并利用 GraphQL 的查询语言解决了 API 的查询和类型约束等问题。在实际项目中,可以根据需求来添加更多的 schema 类型和字段,实现更高效、灵活的数据查询和更新。

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

纠错
反馈