GraphQL实战:写给全栈工程师们
上QQ阅读APP看书,第一时间看更新

1.1 什么是GraphQL

GraphQL是Facebook公司在2015年正式发布的一种全新数据查询方式,它优雅地解决了客户端与服务器端数据交换的难题。仅仅用两年多的时间,GraphQL就得到了开源社区以及硅谷IT公司的广泛认可,并逐步取代传统的RESTful API,被越来越多的互联网公司所采用并作为新的数据查询标准。

其实早在2012年2月GraphQL就由Facebook公司内部立项秘密研发,其早期命名为SuperGraph,初期主要目的在于提高Facebook手机端从服务器端读取各种feed数据的效率。很快GraphQL在Facebook公司内部就受到了广泛的好评,于是Facebook公司的工程师们把GraphQL不断应用到其他各种场景。GraphQL优越的特性使其在公司内部的推广非常顺利,各项目组很快就完成了前后端相关设计的换代。2015年1月,Facebook公司在一次技术讲座中无意间提到了GraphQL,出乎意料地引起了巨大反响,大量围观群众追问:“我们什么时候可以得到这项技术?”但此时GraphQL还不是一个开源项目,它只是Facebook公司内部所使用的一项技术。GraphQL团队在得到公众广泛认可后十分兴奋,他们经过了几个月艰苦卓绝的工作,把GraphQL从Facebook公司庞杂的代码库中分离出来,进一步优化了GraphQL的语法,终于在2015年7月把GraphQL作为一个开源项目发布给了全世界。一个好项目的开源,往往只是一个奇迹的开始,GraphQL很快就不再是Facebook公司的一家之言,很多公司和个人项目迅速跟进并提出了大量的意见反馈,让GraphQL在2016年经过一整年的发展,最终变成了一个可适用于各种生产环境(Production Ready)的开源技术。

虽然说GraphQL是一个很新的开源项目,但是它已经在Facebook公司的应用场景下实践了好几年的时间,可以说它公开发布伊始,就是一个久经考验、异常成熟的项目。而且从硅谷以及国内各互联网公司的实践反馈来看,GraphQL的确可以提高数据的查询效率,并能很好地缩短前后端开发的迭代周期。

Facebook公司所开源的GraphQL不仅仅是软件包及其源代码,更重要的是它提供了一套跨编程语言的数据查询标准[1]。在GraphQL的标准之下,各编程语言(Java、JavaScript、Go、PHP、Python、Scala等)的开发者以极大的热情开发出自己语言的GraphQL实现,现在可以在几乎所有主流的编程语言上使用GraphQL。

为什么GraphQL能如此快速地被业界接受呢?因为业界有实际的需求。那么这个实际的需求又从何而来呢?这就要从分布式系统的设计谈起。