如何使用 GraphQL 构建强类型 API

阅读时长 6 分钟读完

引言

GraphQL 是一种由 Facebook 开发的查询语言和运行时环境,它可以让客户端定义其数据需求,而服务端只返回所需数据。随着前端技术的不断发展,GraphQL 也成为了越来越多公司和团队构建 API 的首选。

本文将介绍如何使用 GraphQL 构建强类型 API,包括基本概念、使用方法和示例代码。

基本概念

Schema

GraphQL 的核心是 Schema,它定义了 API 的类型和关系。Schema 由类型定义和查询定义组成,类型定义描述了数据的类型和结构,而查询定义描述了如何获取数据。

以下是一个简单的 Schema 定义:

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

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

这个 Schema 定义了一个名为 user 的查询,接受一个 id 参数并返回一个 User 类型的对象。User 类型包含了 idnameage 三个字段,分别为 ID 类型、String 类型和 Int 类型。

Resolver

Resolver 是 GraphQL 的执行器,它负责根据 Schema 定义获取数据。Resolver 由函数组成,每个函数对应一个 Schema 中的字段,它接受参数并返回数据。

以下是一个简单的 Resolver 定义:

这个 Resolver 定义了一个名为 user 的函数,接受一个 id 参数和一个 context 上下文对象,返回一个 User 类型的对象。context 对象可以包含任何需要在 Resolver 中使用的数据,比如数据库连接对象等。

使用方法

安装

使用 GraphQL 需要安装两个库:graphqlexpress-graphqlgraphql 是 GraphQL 的核心库,express-graphql 是一个 Express 中间件,用于将 GraphQL 集成到 Express 应用程序中。

可以使用以下命令安装这两个库:

配置

使用 express-graphql 需要创建一个 GraphQL 中间件,并将其添加到 Express 应用程序中。中间件需要传递一个 Schema 和一个 Resolver 对象。

以下是一个简单的配置示例:

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

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

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

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

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

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

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

这个配置示例创建了一个 Express 应用程序,将 GraphQL 中间件添加到路径 /graphql 中。中间件使用了一个名为 schema 的 Schema 对象和一个名为 rootValue 的 Resolver 对象,同时打开了 GraphiQL 调试工具。

查询

使用 GraphQL 查询数据需要发送一个 POST 请求到 GraphQL API。请求需要包含一个名为 query 的参数,它是一个包含 GraphQL 查询语句的字符串。

以下是一个简单的查询示例:

这个查询语句查询了 ID 为 1 的用户的姓名和年龄。

示例代码

以下是一个完整的示例代码,包括 Schema、Resolver、配置和查询:

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

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

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

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

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

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

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

结论

使用 GraphQL 构建强类型 API 可以提高开发效率和代码质量,同时也可以提供更好的数据安全性和可维护性。本文介绍了 GraphQL 的基本概念、使用方法和示例代码,希望能够帮助读者更好地理解和使用 GraphQL。

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

纠错
反馈