使用 TypeScript 进行 GraphQL 开发的全部指南

阅读时长 7 分钟读完

GraphQL 是一种用于 API 的查询语言,它不同于传统的 RESTful API。在 GraphQL 中,客户端可以指定需要的数据,并得到与请求相对应的精确响应。同时,TypeScript 是一种现代化的 JavaScript 的超集,它为 JavaScript 添加了类型系统和其他大量的特性。使用 TypeScript 可以使代码更加稳定和易于维护。在本文中,我们将介绍如何使用 TypeScript 进行 GraphQL 开发。

1. 安装依赖

首先,我们需要安装一个用于处理 GraphQL 的包。可以使用官方的 graphql 包进行操作,也可以使用其他的开源工具,如 graphql-toolsapollo-server-express。在这里,我们以 apollo-server-express 作为示例:

还需要安装一些类型定义文件:

2. 创建模型

模型是构建 GraphQL API 的基础。我们可以使用类来定义 GraphQL 的类型。例如,我们定义 User 类型如下:

接下来,我们定义一个用户的数据源,它将返回一个 User 类型的数组:

3. 定义查询

我们可以使用 graphqlbuildSchema 函数来定义一个查询。例如,我们定义一个查询,它将返回所有的 User

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

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

  ---- ----- -
    ------ ------
  -
---
展开代码

这个查询定义了一个 User 类型和一个查询 users,并且它将返回一个 User 类型的数组。

接下来,我们将定义实现 users 查询的 rootValue。在这个例子中,我们将返回所有的用户:

4. 创建服务器

创建一个 Express 服务器,将 apollo-server-expressgraphqlExpressgraphiqlExpress 中间件添加到服务器上:

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

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

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

---------------- -- -- -
  -------------------- ------ -- ------- -- --------------------------------
---
展开代码

现在,当你访问 http://localhost:3000/graphiql 时,你应该可以看到一个优秀的交互式 GraphQL IDE。在其中,在左侧 pane 中输入如下查询:

点击右侧的“ Run ”按钮后,应该可以看到所有的用户的信息。

5. 添加修改查询

接下来我们来添加一个修改查询 createUser。定义 schema 如下:

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

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

  ---- -------- -
    ---------------- --------- ----
  -
---
展开代码

这个定义了一个 createUser 的 mutation,它将会返回一个 User 类型。现在,我们将实现它:

现在,当你在 GraphiQL 中运行这个 mutation:

你应该可以看到一个新的用户被创建了,并且返回了用户的信息。

6. 结论

使用 TypeScript 进行 GraphQL 开发是一种非常轻松自然的方式。我们可以定义类来表示 GraphQL 的类型,使用 buildSchema 函数来定义查询和 mutation,然后使用 rootValue 来实现这些查询和 mutation。总之,GraphQL 在 API 设计中确实是一个有用的工具。在使用 TypeScript 开发它的时候,我们可以使用所有 TypeScript 的优点和工具来提高开发效率和代码质量。

完整代码如下:

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

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

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

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

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

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

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

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

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

---------------- -- -- -
  -------------------- ------ -- ------- -- --------------------------------
---
展开代码

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

纠错
反馈

纠错反馈