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 服务器可以解析该字符串并以特定格式(即 JSON)响应请求的数据。
GraphQL 解析器
为了理解我们的查询,GraphQL 服务器需要定义一组函数/规则,供服务器生成响应。这些函数被称为 GraphQL 解析器,它们负责处理我们的查询。
GraphQL 与 REST
假设我们想使用 RESTful API 从公司博客中检索帖子。首先,我们需要GET api/posts
,但是帖子还包含其他数据,例如作者,所以我们需要再次调用 REST API 来获取帖子(即作者)的详细信息,这样一来,最终需要两次服务器请求而不是一次。而且随着规模的不断扩大,您可能需要向不同的端点发出更多请求,才能获取所有需要的数据。
性能下降,尤其是在蜂窝网络连接缓慢的情况下,是 Facebook 工程师观察到的主要问题,而寻求解决方案的迫切愿望正是 GraphQL 的子结构。在 GraphQL API 中,我们拥有一个能够处理复杂请求的单一端点。您可以向 GraphQL 服务器查询特定数据,它会返回您请求的内容,从而减少通过网络传输的比特数。
学习 GraphQL
如你所见,GraphQL 是一个非常有趣的概念。在过去的几年里,它获得了巨大的发展,并成为一项备受青睐的技能,经常成为工作机会的必备技能。如果你有兴趣深入了解 GraphQL,这里有很多优秀的资源可以学习。
知识库
- GrapQL 官方文档是开始学习 GraphQL 的最佳地点。
- GraphQL Weekly是一份包含 GraphQL 教程、新闻以及与 GraphQL 相关的所有内容的新闻通讯。
- 如何使用 GraphQL是一个网站,它将详细向您解释什么是 GraphQL,并指导您从 GraphQL 新手到发布生产 GraphQL 项目的步骤。
GraphQL 工具
-
GraphCMS 是一种工具,它允许您为您的 Web 项目构建托管的 GraphQL 后端以及管理其内容的工具。
-
GraphQL 编辑器是 GraphQL 的图形游乐场,可让您更快地构建和管理 graphql 模式,并为您提供一组 GraphQL 工具来:
- 坚固的 GraphQL IDE(错误处理、类型验证),
- 生成静态 GraphQL 文档,
- 使用 Live JAMStack Engine 和 Mock Backend 预览 GraphQL 查询。
-
Dgraph是一个原生 GraphQL 数据库,可帮助您更快地构建应用程序。
-
Hasura使您的 PostgreSQL 数据库可通过 GraphQL API 立即使用。
-
Apollo 是一个平台,它允许您将数据库、不同的 API 和微服务组合成一个可以使用 GraphQL 进行查询的数据源。
加速您的 GraphQL API 开发
GraphQL 编辑器是一款支持工具,既适用于高级 GraphQL 用户,也适用于 GraphQL API 新手。我们一体化的 GraphQL 开发环境将帮助您更快地构建、管理和部署 GraphQL API。免费试用 GraphQL 编辑器!
文章来源:https://dev.to/graphqleditor/introduction-to-graphql-2nj0