什么是 GraphQL?
最初发表于Medium
GraphQL 是构建和查询 API 的最现代方式之一。
GraphQL 是一种描述如何请求数据的语法,通常
用于将数据从服务器加载到客户端。GraphQL 具有三个主要
特性:
- 它让客户端准确指定它需要什么数据。
- 它使得从多个来源聚合数据变得更加容易。
- 它使用类型系统来描述数据。
使用GraphQL,用户只需进行一次调用即可获取所需
信息,而不必构建多个 REST 请求来获取相同的信息。
GitHub 使用GraphQL,因为它为开发者提供了更大的灵活性。 相比发送多个 REST 调用来获取信息,
GraphQL 能够精确生成用户所需的信息,这是一个巨大的优势。 使用 REST 调用生成信息需要两个阶段——一个阶段收集 用户信息,另一个阶段获取 用户所属组织的信息。GraphQL 有助于简化这两个步骤 。
那么什么是 GraphQL?
GraphQL 查询是一个字符串,它被发送到服务器进行解释和
执行,然后将 JSON 返回给客户端。
定义数据形状:您首先会注意到,GraphQL 查询会
镜像其响应。这使得预测
查询返回数据的形状变得容易,并且如果您知道应用
所需的数据,也可以编写查询。更重要的是,这使得 GraphQL 非常易于学习和使用。GraphQL
完全由产品以及构建这些产品的设计人员和开发人员的数据需求驱动
。
层次化: GraphQL 的另一个重要特性是其层次化
特性。GraphQL 能够自然地遵循对象之间的关系,而 RESTful
服务可能需要多次往返(在移动网络上会占用大量资源)
或使用复杂的 SQL 连接语句。这种数据层次结构与
图结构数据存储以及
其所使用的层次化用户界面完美契合。
强类型: GraphQL 查询的每个级别都对应一种特定
类型,每种类型描述一组可用字段。与 SQL 类似,这
使得 GraphQL 能够在执行查询之前提供描述性的错误消息。
协议,而非存储:服务器上的每个 GraphQL 字段都由
任意函数支持。GraphQL 必须利用所有这些现有工作才能发挥作用,
因此它不会规定或提供任何支持存储。相反,GraphQL 会
利用您现有的代码。
自省: GraphQL 服务器可以查询其支持的类型。
这为工具和客户端软件构建了一个强大的平台,使其能够基于
这些信息进行构建,例如使用静态类型语言的代码生成、Relay 或类似GraphiQL
的 IDE (如下图所示)。GraphiQL 帮助开发人员 快速学习和探索 API,而无需查找代码库或与 cURL 纠缠不清。
不受版本限制:返回数据的形式完全由
客户端的查询决定,因此服务器变得更简单,易于通用化。添加
新的产品功能时,可以向服务器添加其他字段,
而不会影响现有客户端。停用旧功能时,
相应的服务器字段可以弃用,但仍可继续使用。这种
渐进式、向后兼容的流程消除了版本号递增的必要
。
即将推出:
- GraphQL 基础知识
- REST 与 GraphQL
- 使用无服务器运行 GraphQL 端点