介绍
GraphQL是一个新的API标准,具有高效,强大,灵活的特性,旨在替代REST模式。GraphQL由Facebook公司开发并开源,目前由来自世界各地的公司和开发者共同维护。
API已经在软件基础设施中变得无处不在。总之, 一个API定义了客户端如何从服务器加载数据。
作为GraphQL的核心点,它支持声明式数据获取,客户端可以从接口中,精确指定需要的数据。不同于多个后端接口返回固定的数据结构,一个GraphQL服务仅仅暴露一个接口,并精确的响应客户端想要的数据。
GraphQL - 一种API查询语言
今天,大多数应用都需要从服务器获取存在数据库中的数据,API需要提供获取数据的接口,以满足应用的需要。
GraphQL往往被误认为是一个数据库技术。这是不正确的,GraphQL是一种API查询语言,而不是数据库的查询语言。所以说,它是数据库无关的,可以用在任何使用API的场景中。
一个更有效的REST模式替代者
REST模式是目前流行的从服务端获取数据的方式。 当REST模式提出时,客户端程序都相对简单,并且发展速度也远落后于目前。REST模式也能很好的适用于诸多应用。然而,过去几年里,API领域有了根本性的变化。特别是,以下三个因素,对API的设计方式发出了挑战:
1.日益增多的移动端使用,需要数据加载过程更有效率
在移动端使用量变多的场景下,低功耗的设备和较差的网络环境是Facebook开发GraphQL最初的原因。GraphQL通过最小化网络传输时所需要的数据量,改善了这种环境中的应用使用情况。
2.各种不同的前端框架和平台
面对各种各样的前端框架和不同终端里的应用,开发并维护一套通用的API,用来满足左右需求,变得越来越难。但是通过GraphQL,客户端可以精确获取所需数据。
3.快速开发&快速添加特性
持续部署已成为许多公司标准,快速迭代和频繁的产品更新也变的不可或缺。如果使用REST模式API,服务端往往需要修改对外暴露的数据接口,来满足客户端在需求和设计上的变动。这阻碍了快速开发和产品迭代。
历史,环境和采用
GraphQL并不是React开发者专用的
Facebook在2012年开始,在他们的原生移动应用中使用GraphQL。但有趣的是,GraphQL目前主要被采用在Web相关技术环境里,反而在移动应用中获得的影响力很小。
Facebook的第一次公开谈论GraphQL是在React.js Conf 2015,并在不久之后宣布了他们的开源计划。因为Facebook总是在结合React谈论GraphQL,所以对于非React开发人员来说,需要花费一段时间才能明白GraphQL绝不是一个限于使用React的技术。
Dan Schafer & Jing Chen在React.JS Conf 2015公开介绍GraphQL。
一个迅速发展的社区
事实上,GraphQL可以在所有客户端与API通信的地方使用。有趣的是,包括Netflix和Coursera的一些公司也曾试探过相似的方案,使API交互更有效率。Coursera设想了一种类似的技术,让客户端指定其数据要求,Netflix甚至已经开源了他们的Falcor解决方案。但在GraphQL开源后,Coursera取消了计划,并搭上了GraphQL的车。
今天,GraphQL被许多不同的公司(如GitHub,Twitter,Yelp和Shopify)用于生产。
尽管如此年轻的技术,GraphQL已经被广泛采用。点击了解还有谁使用GraphQL。
列出几个专注于GraphQL的组织,有GraphQL Summit、GraphQL Europe、GraphQL Radio、GraphQL Weekly。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。