GraphQL 初探—面向未来 API 及其生态圈

本文探讨了GraphQL作为API查询语言如何解决REST模式的难题,如接口灵活性差、操作繁琐和维护成本高等。GraphQL的核心特性包括声明式的数据获取、单一API入口和传输层无关性。通过示例,解释了如何通过GraphQL实现更高效的数据查询和更简洁的开发流程。然而,GraphQL也面临安全和缓存挑战,需要权衡引入成本和收益。
摘要由CSDN通过智能技术生成

GraphQL 初探—面向未来 API 及其生态圈

 

什么是 GraphQL ?第一次看到这个名词未免让人联想到数据库查询语言 SQL 。但本质上,这是两个完全不同的东西, GraphQL 在官方文档里的定义如下:

GraphQL is a query language for your API, and a server-side runtime for executing queries by using a type system you define for your data.

即 GraphQL 既是一个 API 查询语言,也指其服务端实现。但 GraphQL 不只是为了在 API 领域搞个类似数据库的查询语言,它的诞生更涉及到 API 设计的思路转变。

REST 模式的难题

通常,一项新技术的产生都会伴随着两个背景,一个是该技术所在的领域出现了新趋势、二是原有的技术难以应对新趋势。而近几年, API 领域有几个趋势愈发值得关注:

首先是日益增多的移动端应用,和移动端性能本身较低下的矛盾,要求数据加载过程更高效。

再者,要满足客户端和前端快速开发、快速添加特性的需求, API 必须能快速拓展。

第三则是各种不同的前端框架和平台层出不穷,而后端 API 服务面对众多的前端框架、乃至前端和客户端共享 API 的情况,其能否按需提供数据,会影响接口复用度和开发效率。

而现如今在 API 领域被广泛使用的 REST 模式,面对上述愈发复杂的客户端和服务端交互,问题也渐渐浮现:

首先是接口灵活性差。由于设计接口粒度较粗或历史遗留原因,接口中有时会存在当前数据交互不需要的字段,导致取到无用且多余的数据;而另一方面,有时前端需要一份数据,却需要手动访问多个接口才能完整获取。

第二是接口操作流程繁琐,回想下前端获取数据的过程,通常我们要先构造 HTTP 请求,然后接收和解析服务端响应。有时还要对收到的或处理后的数据另作本地数据转储,最后才进行 UI 展示。

第三,随着客户端功能拓展,服务端不断增加接口。这样维护众多接口,不仅服务端维护成本高,此外也不能按需提供数据、阻碍了客户端的快速迭代和拓展。

还有 REST 模式实质上是基于 HTTP 协议的,这虽让其易于被 Web 开发人员理解和上手,但也决定它不能灵活选择网络协议来解决问题。

GraphQL 的解决方案

面对 REST 模式的上述不足, Facebook 提出了他们的解决方案 – GraphQL :

 

 

前面提到 GraphQL 既是一个 API 查询语言,也指其服务端实现,所以 GraphQL 本身也由两部分组成,Facebook 将它们分别开源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值