G

GraphQL 简介

2025-06-07

GraphQL 简介

GraphQL 是一种构建 API 的新方法,旨在克服RESTful API 的两个基本限制:数据过滤器和关系。这两个典型的 REST 缺陷迫使 REST 用户始终在响应中获取完整的有效负载,并分别访问多个数据源。

什么是 GraphQL

GraphQL 是 Facebook 为解决其移动应用中数据流未优化问题而创建并开源的 API 数据查询和操作语言。通常,GraphQL 是一种描述从服务器请求数据方式的语法。GraphQL 与传统 REST API 的主要区别在于,GraphQL 的响应格式在查询中描述,并且由客户端而非服务器定义。GraphQL 的另一个重要特点是它与语言无关。

基本结构

使用 GraphQL 的核心概念是schema。设计 schema 是开发流程的第一步,它对项目的其余部分影响深远。精心规划的 Graph QL schema 是设计精良且安全的产品的核心。GraphQL Schema 是任何 Graph QL 项目的核心,它严格定义项目的结构并规范数据的访问方式。

GraphQL 查询和变更

GrahQL 操作有两种基本类型:GraphQL 查询和 GraphQL 变异:

  • GraphQL 查询- 查询允许您从服务器端读取或获取数据,
  • GraphQL 突变- 突变用于写入或发布值。

GraphQL 查询和响应

执行的操作具有字符串的形式,GraphQL 服务器可以解析该字符串并以特定格式(即 JSON)响应请求的数据。

GraphQL 解析器

为了理解我们的查询,GraphQL 服务器需要定义一组函数/规则,供服务器生成响应。这些函数被称为 GraphQL 解析器,它们负责处理我们的查询。

基本 GraphQL 解析器函数

GraphQL 与 REST

假设我们想使用 RESTful API 从公司博客中检索帖子。首先,我们需要GET api/posts,但是帖子还包含其他数据,例如作者,所以我们需要再次调用 REST API 来获取帖子(即作者)的详细信息,这样一来,最终需要两次服务器请求而不是一次。而且随着规模的不断扩大,您可能需要向不同的端点发出更多请求,才能获取所有需要的数据。

性能下降,尤其是在蜂窝网络连接缓慢的情况下,是 Facebook 工程师观察到的主要问题,而寻求解决方案的迫切愿望正是 GraphQL 的子结构。在 GraphQL API 中,我们拥有一个能够处理复杂请求的单一端点。您可以向 GraphQL 服务器查询特定数据,它会返回您请求的内容,从而减少通过网络传输的比特数。

GraphQL 与 REST 的主要区别

学习 GraphQL

如你所见,GraphQL 是一个非常有趣的概念。在过去的几年里,它获得了巨大的发展,并成为一项备受青睐的技能,经常成为工作机会的必备技能。如果你有兴趣深入了解 GraphQL,这里有很多优秀的资源可以学习。

知识库
  1. GrapQL 官方文档是开始学习 GraphQL 的最佳地点。
  2. GraphQL Weekly是一份包含 GraphQL 教程、新闻以及与 GraphQL 相关的所有内容的新闻通讯。
  3. 如何使用 GraphQL是一个网站,它将详细向您解释什么是 GraphQL,并指导您从 GraphQL 新手到发布生产 GraphQL 项目的步骤。

GraphQL 编辑器生成的静态 GraphQL 文档

GraphQL 工具

  1. GraphCMS 是一种工具,它允许您为您的 Web 项目构建托管的 GraphQL 后端以及管理其内容的工具。

  2. GraphQL 编辑器是 GraphQL 的图形游乐场,可让您更快地构建和管理 graphql 模式,并为您提供一组 GraphQL 工具来:

    • 坚固的 GraphQL IDE(错误处理、类型验证),
    • 生成静态 GraphQL 文档,
    • 使用 Live JAMStack Engine 和 Mock Backend 预览 GraphQL 查询。
  3. Dgraph是一个原生 GraphQL 数据库,可帮助您更快地构建应用程序。

  4. Hasura使您的 PostgreSQL 数据库可通过 GraphQL API 立即使用。

  5. Apollo 是一个平台,它允许您将数据库、不同的 API 和微服务组合成一个可以使用 GraphQL 进行查询的数据源。


加速您的 GraphQL API 开发

GraphQL 编辑器是一款支持工具,既适用于高级 GraphQL 用户,也适用于 GraphQL API 新手。我们一体化的 GraphQL 开发环境将帮助您更快地构建、管理和部署 GraphQL API。免费试用 GraphQL 编辑器!

GraphQL 编辑器

文章来源:https://dev.to/graphqleditor/introduction-to-graphql-2nj0
PREV
Recoil - React 的实验性状态管理库
NEXT
面向初学者的交互式 GraphQL 教程