Coursera 笔记

Module 02 · Web API Essentials: REST API and GraphQL

Optional: Basics of GraphQL(可选)GraphQL 基础知识

Coursera ↗

什么是 GraphQL?

GraphQL 是一种用于您的 API 的查询语言(Query Language)。

  • 核心目标: 它提供了一种标准方式,允许客户端仅请求他们从 API 所需的数据。
  • 语言无关性: 它可以使用任何编程语言进行开发,因为它与语言无关(language agnostic)。

GraphQL 的核心优势

GraphQL 使您能够精确地从 API 检索所需的内容:

  • 不多不少: 您不会收到您没有请求的数据。
  • 精确数据: 您可以从不同资源中,精确地收到您所需要的数据。
  • 单个端点: 与 RESTful API 不同,GraphQL 只需要一个端点即可检索您需要的所有内容。
    • 示例: 如果您只需要产品的名称,那么您收到的就只有名称。

GraphQL API 的关键特性

特性 RESTful API GraphQL API
架构 API 即资源,提供端点以使用 HTTP 方法执行特定操作。 模式(Schema)中定义的类型即为节点(Nodes)。
请求端点 通常需要多个调用(multiple calls)来获取不同资源的数据。 通常只需要一个端点即可获取所需的所有数据。
数据接收 接收服务器发送的所有数据(可能包含冗余)。 只请求和接收您所需要的数据。
API 扩展 扩展可能需要创建新的 API 版本。 扩展不需要新的版本;您可以添加新字段,而不会破坏现有客户端(因为它们只请求了所需的内容)。

查询与修改数据

GraphQL 通过两种主要操作类型来处理数据:

  1. 查询(Query):
  • 用于查询您的数据。
  • 类似于 RESTful API 中的 GET 请求。
  • 核心:对对象上的特定字段发出请求。
  1. 变更(Mutation):
  • 用于操作和修改您的数据。
  • Mutation 类型中的每个字段都可以被视为 RESTful API 中的 POST、PUT 或 DELETE 请求。

实际应用示例:Netflix

Netflix 以其松耦合和高度可伸缩的微服务架构而闻名。

  • 挑战: 最初,实体之间的关系分散在各种微服务中。
  • 解决方案: Netflix 团队开始构建一个精选的 Graph API,称为 "Studio API"。
    • 目标是提供统一的抽象,覆盖数据和关系。
    • 在这种新设计中,Studio API 负责模式(schema)和解析查询(resolving queries)。
  • 进一步发展: Netflix 工程团队采用了联合架构(federated architecture),其中每个团队都拥有其各自领域的所有权。

总结

  • GraphQL 是一种语言无关的 API 查询语言。
  • 它为您提供精确的数据,不多不少。
  • 它只需要一个端点来处理复杂的数据请求。