GraphQL 是一种由 Facebook 开源的数据查询语言和运行时。它使得客户端可以请求需要的数据,并且只返回被要求的数据。这种方式可以大大减少服务器传输的数据量,节省网络带宽,提高应用程序性能及开发效率。此外,GraphQL 支持类型系统,使得应用程序可以准确的定义数据的类型,从而确保数据传输的一致性。
本篇文章将介绍如何使用 GraphQL 构建可维护的 API。
GraphQL 的基本概念
在使用 GraphQL 构建 API 之前,需要了解一些基本概念。
Schema
GraphQL 的核心是 Schema(模式定义语言),它是定义数据类型和关系的文档。Schema 在整个应用程序中是唯一的实体,它描述了应用程序支持的所有类型和方法。
Schema 中的类型可以是标量类型(如字符串、整数和布尔值)、对象类型或枚举类型。对象类型是指由一个或多个字段组成的自定义类型,而枚举类型是指一组命名值的 set。
Query
查询(Query)是一个 GraphQL 请求的入口点。它描述了客户端希望从服务器获取什么数据。在查询中,客户端可以指定要请求的字段及其嵌套关系。
Mutation
变更(Mutation)是指对服务器端数据进行更改的 GraphQL 请求。它们类似于 REST API 的 POST、PUT、DELETE 等请求。
Resolver
Resolver 是一个将字段指向数据源的函数。它们根据查询中指定的参数返回数据。Resolver 可以是同步的或异步的。通常,Resolver 负责从数据库中获取数据,但它可以是从任何数据源中获取数据。
如何使用 GraphQL
现在,让我们看一下如何使用 GraphQL 构建可维护的 API。
步骤 1:定义 Schema
我们需要通过定义 Schema 来描述数据类型和关系。以下是一个示例 Schema:
-- -------------------- ---- ------- ---- ---- - --- --- ------ ------ -------- ------ ------- ------- --------- --------- - ---- ------ - --- --- ----- ------ ------ ------ ------ ------ - ---- ------- - --- --- -------- ------ ----- ----- - ---- ----- - ------ ------ -------- ----- ---- -------- -------- ---------- ----- ------ --------- --------- ----------- ----- ------- - ---- -------- - ---------------- ------------ ----- -------------- ---- ----- ------------ ----- -------------- ----- ----- - ----- --------- - ------ ------- -------- ------- --------- --- -
该 Schema 定义了三种自定义类型(Post、Author 和 Comment)、一个查询(Query)和一个变更(Mutation)。
步骤 2:实现 Resolver
在获取 Schema 之后,应该实现 Resolver。Resolver 是将字段指向数据源的函数。它们告诉 GraphQL 如何获取数据。
以下是一个简单的 Resolver 示例:
-- -------------------- ---- ------- ----- --------- - - ------ - ------ -- -- ------------ ----- --- - -- -- -- ------------------ -------- -- -- -------------- ------- --- - -- -- -- -------------------- --------- -- -- --------------- -------- --- - -- -- -- --------------------- -- --------- - ----------- --- - ---- -- -- ------------------ ----------- --- - --- ---- -- -- -------------------------- ------ ----------- --- - -- -- -- --------------------------- -- ----- - ------- -------- -- --------------------------------- --------- -------- -- -------------- ------- --------- --- -- ------- - ------ -------- -- ----------- --------- --------- --- -- -------- - ----- -------- -- ----------------------------- -- --
以上 Resolver 将查询映射到调用相关的方法,并指定如何获取每个字段的数据。
步骤 3:使用 GraphQL
在启动服务器之后,我们现在可以使用 GraphQL API 执行查询和变更。
以下是一些查询示例:
-- -------------------- ---- ------- ----- - -------- ------ - ------ -------- ------ - ----- ----- - - - ----- - ----- - --- ------ ------- - - ----- - ---------- ------ - ----- ------ ----- - --- ----- - - -
以下是一个变更示例:
mutation { createPost(data: {title: "foo", content: "bar", authorId: "baz"}) { id, title, content, author { name, email } } }
结论
GraphQL 是一个强大、高效的 API 开发工具。通过定制 Schema 和 Resolver,你可以轻松地构建可维护的 API。虽然 GraphQL 可能需要一些额外的学习,但是一旦你掌握了它,将会大大提高你的开发效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6703443fd91dce0dc84ab94a