GraphQL 概 - Amazon AppSync
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

GraphQL 概

GraphQL 是一种数据语言,此语言的开发目的是便于应用程序从服务器上提取数据。它具有可指定的自记录风格。在 GraphQL 操作中,客户端指定数据从服务器返回时的结构如何。这样客户端就可以只查询它需要的数据,以它需要的格式进行查询。

GraphQL 有三项顶级操作:

  • 查询 - 只读提取

  • 更改 - 写入,然后提取

  • 订阅 - 用于接收数据的长期活动连接

GraphQL 通过架构公开这些操作,架构可定义 API 的功能。架构由类型组成,可以是根类型(查询、更改或订阅)或用户定义的类型。开发人员首先用架构定义与客户端应用程序通信的 GraphQL API 的功能。有关此过程的更多信息,请参阅设计您的架构

定义架构之后,类型的字段需要返回一些数据。在 GraphQL API 中,这是通过 GraphQL 解析程序实现的。这是可以调用数据源,或调用触发器返回一些值(例如单条记录或一组记录)的函数。解析程序可以有许多类型的数据源,例如 NoSQL 数据库、关系数据库或搜索引擎。您可以聚合多个数据源的数据,返回相同的类型,进行混合搭配以满足您的需要。

将架构连接到解析器后,客户端应用程序可以发出 GraphQL 查询,也可以发出变更或订阅。查询包含 query 关键字,后跟大括号以及字段名称,例如 allPosts。字段名称后面是另一组大括号,中间是您希望返回的数据。例如:

query { allPosts { id author title content } }

此查询针对allPosts字段调用解析器,仅返回idauthortitle、和content值。如果系统中有许多文章(假设 allPosts 返回博客文章),可通过单次网络调用实现。虽然设计可以有所变化,但在传统系统中,它的建模方式通常会对每个文章进行单独的网络调用。减少网络调用的次数可以降低对带宽的需求,从而节省客户端应用程序消耗的电池电量和 CPU 周期。

这些功能可以使新应用程序的原型设计和现有应用程序的修改变得非常快。它的优势在于,您可使用首选编程语言,将应用程序的数据要求与 UI 代码共置于应用程序中。这样客户端团队和后端团队就可独立工作,而无需针对后端实施的建模数据进行编码。

最后,类型系统提供分页、关系、继承和接口的强大机制。在使用 GraphQL 类型系统时,您可以将不同 NoSQL 表中的不同类型关联起来。

请参阅以下资源进行延伸阅读: