GraphQL

简而言之:GraphQL 是一种用于 API 的查询语言。客户端可以精确指定所需字段,避免过度获取或获取不足。单个端点即可处理所有查询、变更和订阅。

GraphQL 于 2012 年在 Meta(Facebook)内部开发,并于 2015 年开源。GraphQL 定义了一个架构,用于描述所有可用的数据和操作。客户端会发送一个查询,其结构与所需响应的形状相对应。服务器只返回请求的字段,不会返回多余内容。

核心概念

  1. 架构:对所有可用数据类型和关系进行类型化定义。
  2. 查询:读取操作。客户端精确指定要返回哪些字段。
  3. 变更:修改服务器端数据的写入操作。
  4. 订阅:通过 WebSocket 将更新推送到客户端的实时操作。
  5. 解析器:服务器端函数,用于获取架构中每个字段的数据。
  6. 片段:可复用的字段选择集合,可在多个查询之间共享。

GraphQL vs REST

  1. 单一端点:GraphQL 使用一个端点。REST 使用多个特定资源的 URL。
  2. 无过度获取:GraphQL 只返回请求的字段。REST 会返回完整资源。
  3. 无获取不足:GraphQL 可在一个请求中获取嵌套数据。REST 通常需要多次往返请求。
  4. 强类型:GraphQL 架构是一份契约。REST 架构通常是非正式的,或根本不存在。
  5. 自省:客户端可以查询架构本身,以发现可用类型和字段。

GraphQL 与网页数据采集

许多现代平台,如 Shopify、GitHub、Twitter/X,都提供 GraphQL API。从这些 API 采集数据需要发送一个 POST 请求,并在请求正文中包含查询,而不是使用 URL 路径。GraphQL API 和 REST 一样返回 JSON。响应结构会精确匹配查询,使解析变得直观。Bright Data 的网页爬虫工具 API可以同时面向 REST 和 GraphQL 端点提取结构化数据。

准备好开始了吗?