现代 API 的查询语言

  • 类型安全的模式,安全的请求

  • 无摩擦的分布式开发

  • 规模化的数据驱动 UI

GraphQL 是开源的并深受业界信赖

自 2012 年以来,Facebook 的移动应用一直由 GraphQL 提供支持。GraphQL 规范于 2015 年开源。现在,它已被全球行业领先的公司所采用,并由 GraphQL 基金会支持,该基金会自 2018 年起由非营利组织 Linux 基金会托管。

...
更多 GraphQL 用户
简介

什么是 GraphQL?

GraphQL 是用于 API 的开源查询语言和服务器端运行时。它提供了一个强类型模式(Schema)来定义数据之间的关系,使 API 更加灵活且可预测。它不绑定于特定的数据库或存储引擎 —— 它能与您现有的代码和数据配合使用,让 API 的长期演进变得更加容易。

query getCity($city: String) {
  cities(name: $city) {
    population
    weather {
      temperature
      precipitation
    }
  }
}
学习 GraphQL
工作原理

GraphQL 查询

  1. 描述你的数据
    type Project {
      name: String!
      tagline: String
      contributors(first: Int, after: ID): [User!]!
    }
  2. 请求你想要的内容
    {
      project(name: "GraphQL") {
        tagline
      }
    }
  3. 获取可预测的结果
    {
      "project": {
        "tagline": "A query language for APIs"
      }
    }

CtrlSpace 打开补全菜单, CtrlEnter 运行查询。

尝试 GraphiQL
商业视角

适用于初创公司和大型企业的成熟解决方案

最佳用户
体验

大规模提供高性能的用户体验。全球领先的应用使用 GraphQL 来打造更快速、更具响应性的数字体验。

  • 更快的数据检索和加载时间
  • 提高带宽效率

稳定性与
安全

在保持数据消耗完全可见性的同时保护您的 API。GraphQL 允许您监控、保护和优化 API 使用,同时确保合规性。

  • 更强的访问控制
  • 改进的商业智能和成本分析

高效的分布式
开发

利用 GraphQL 灵活的解耦架构让您的团队更快速地发布。GraphQL 允许前端和后端团队独立且高效地工作。

  • 更快速的迭代
  • 改进的跨团队协作
了解更多关于 GraphQL
设计原则

GraphQL 的五大支柱

以产品为中心

GraphQL 坚定地为前端工程师而生,符合他们的思维方式、视图结构以及数据消费模式。

层级结构

大多数产品开发涉及视图层级的创建和操作。GraphQL 查询镜像了 UI 结构,确保以自然的方式请求与响应结果形状匹配的数据。

强类型

每个 GraphQL 服务都定义了一个类型系统,使工具能够在执行前对查询进行语法验证,并确保响应的可预测性。

客户端指定响应

GraphQL 服务发布其客户端允许使用的功能。由客户端控制其接收的数据,在字段级别仅请求其所需的内容,而不像传统的固定端点。

自文档化

GraphQL API 可以自我描述,允许工具和客户端查询模式(Schema)以获取可用类型和功能。它作为构建通用工具和客户端软件库的强大平台。

由社区驱动

GraphQL 是一个由全球数千名协作开发者和公司塑造的生态系统。从个人贡献者到全职维护者,GraphQL 社区构建库、举办聚会、资助创新并帮助推动技术进步。

GraphQL 优势

精准

请求你所需的,获得正好的

向你的 API 发送 GraphQL 查询,并精确获得你请求的数据 —— 不多拿,也不少取。可预测的响应使应用保持高效和高性能。

优化

在一次请求中检索多个资源

GraphQL 无缝地遵循数据之间的关系,消除了多次 API 调用。虽然典型的 REST API 需要从多个 URL 加载,但 GraphQL API 只需一次请求即可获取应用所需的全部数据。是复杂查询和优化网络性能的理想选择。

生产力

利用强大的社区工具加速开发

无需离开编辑器即可准确知道可以请求的内容。在发送查询前识别潜在问题,并利用改进的代码智能。GraphQL 让构建强大工具变得简单。其中许多工具(如 GraphiQL)都是开源的且由 GraphQL 社区构建。

一致性

基于类型安全模式放心构建

GraphQL API 围绕类型和字段构建,而非端点。这确保了数据一致性、自文档化以及清晰、可操作的错误。应用可以使用类型来避免编写手动解析代码。

无版本

无需版本即可演进

添加新字段和类型而不影响现有查询。弃用过时的字段,同时保持 API 的整洁和面向未来。通过使用单一的演进版本,GraphQL API 为应用提供了对新功能的持续访问,并鼓励更具可维护性的服务器代码。

集成

整合你自己的数据和代码

GraphQL 与存储无关 —— 将数据库、REST API 和第三方服务集成到一个统一的数据层中。利用多种语言提供的 GraphQL 引擎,编写能够利用您现有数据和代码的 GraphQL API。

数据同地化 (Data Colocation)

数据同地化 (Data Colocation)

GraphQL 片段 (Fragments) 允许您在组件附近定义每个组件的数据需求,并通过单个查询满足它们。

服务器
<好友列表>
<好友列表项>
<好友信息/>

点击悬停在组件上查看它们的 GraphQL 片段。

好友

  • Image
    Trudie
    120共同好友
    用户名
    funkytrudster89
    电子邮件
    trudie@mail.com
    位置
    美国 纽约
  • Image
    Frances
    42共同好友
    用户名
    frannyfran12
    电子邮件
    frances@mail.com
    位置
    西班牙 马德里
  • Image
    Fernando
    114共同好友
    用户名
    fern_whirlwind
    电子邮件
    fernando@mail.com
    位置
    阿姆斯特丹,荷兰
query GetFriendList {
  ...FriendList
}
 
fragment FriendList on Query {
  friends {
    ...FriendListItem
  }
}
 
fragment FriendListItem on Friend {
  name
  profilePic
  mutualFriendsCount
  isSubscribed
  ...FriendInfo
}
 
fragment FriendInfo on Friend {
  username
  email
  location
}

GraphQL 适合我吗?

选择与您的项目最相关的用例,了解 GraphQL 如何帮助您构建更快速、现代的解决方案。

拥有众多服务的大型后端

GraphQL 作为跨多个服务的统一数据层。通过这种方式,您可以简化 API 管理并减少团队之间的依赖。它支持高效的数据获取,同时保持 API 表面的灵活和可维护性。

业界评价

深受世界级开发者的喜爱

GraphQL 为我们提供了兼具企业级性能和初创公司的灵活性:精简的查询、轻量级的负载、实时更新和闪电般的响应速度,帮助我们的客户专注于构建应用,而不是围着 API 打转。

Matteo Collina
Platformatic 联合创始人兼 CTO
Matteo Collina
Matteo Collina
Platformatic 联合创始人兼 CTO

无论是对于生产者还是消费者,GraphQL 都是大规模创建和管理高性能 API 的最佳开发工具。它可以查询任何来源并公开任何内容,包括实时数据。它能让你对 API 使用情况的理解达到其他规范无法提供的深度。

Uri Goldshtein
The Guild 创始人兼 CEO
Uri Goldshtein
Uri Goldshtein
The Guild 创始人兼 CEO

强大工具构成的丰富生态系统使公司能够快速交付令人愉悦且长久生命力的 API,而无需牺牲性能或可扩展性。从独立开发者到大型组织,GraphQL 已一再证明它是移动和 Web 应用的正确 API 选择。

Benjie Gillam
Graphile 总监
Benjie Gillam
Benjie Gillam
Graphile 总监

加入社区

GraphQL 由社区驱动,并得到全球数千名开发者和公司的支持。成为塑造 API 开发未来的网络的一员。