Logo
Section 1 / 4

GraphQL 简介

了解 GraphQL,这是一种开源的数据查询和操作语言,可用于为任意客户端-服务器架构构建 API。

导入

GraphQL 简介

了解 GraphQL,这是一种开源的数据查询和操作语言,可用于为任意客户端-服务器架构构建 API。

客户端-服务器架构

开发人员经常需要与其他系统通信,以读取或写入数据。

要在客户端与服务器之间建立通信,我们需要明确可以请求哪些内容、需要发送哪些数据,以及可以从服务器期望获得什么样的响应数据。

API 是用于构建应用程序软件的一组定义。它是消费者(客户端)与生产者(服务器)之间通过内容(请求)达成的一种约定。

例如,一个披萨订购应用可能会询问用户想要订购哪种披萨。客户端将返回所选的披萨配料(即负载数据)。随后,披萨服务会返回订单是否创建成功(即响应结果)。

...
客户端与服务器之间的通信方式

什么是 GraphQL?

大多数应用程序都需要与服务器进行通信。后端的责任是提供一个符合应用需求的数据接口。

...
GraphQL 作为客户端与服务器之间的 API 层

GraphQL 提供了一种构建 API 的全新方式。客户端可以通过 GraphQL 明确指定所需的数据。GraphQL 服务器仅暴露一个统一的端点,并根据客户端的具体请求直接返回对应的数据,而不是提供多个返回固定数据结构的接口。

GraphQL 包含类型系统、查询语言、执行语义、静态验证和类型内省等特性。它支持读取数据、写入数据(变更操作),以及订阅数据变化和实时更新——后者通常通过 WebSocket 实现。GraphQL 服务器可以用 JavaScript、Python、Ruby、Java、C++ 等主流编程语言实现。

历史与发展

相较于 REST,GraphQL 是一种更注重查询能力和数据操作的 API 构建方式。GraphQL 最初由 Facebook 在 2012 年开发,并于 2015 年开源。

在 Facebook 开源 GraphQL 项目之前,Netflix 和 Coursera 等公司也探索过类似的技术,旨在提升 API 交互的效率。例如,这两家公司都设想让客户端自行声明其所需的数据。其中只有 Netflix 成功将其解决方案开源,命名为 Falcor。而在 GraphQL 开源之后,Coursera 最终终止了自家的开源项目 Naptime,转而全面支持 GraphQL。如今,GitHub、Twitter、Yelp 和 Shopify 等公司已在生产环境中广泛使用 GraphQL。

注意: GraphQL 是 REST 的一种开源替代方案。

简介

GraphQL 与 REST 的比较