GraphQL
2023-04-01 21:14:59 阿炯

GraphQL是一个开源的,面向API而创造出来的数据查询操作语言以及相应的运行环境。2012年仍处于Facebook内部开发阶段,直到2015年才公开发布。2018年11月7日,Facebook将GraphQL项目转移到新成立的GraphQL基金会(隶属于非营利性的Linux基金会)。作为 REST 的替代方案,GraphQL 允许开发人员构建相应的请求,从而通过单个 API 调用从多个数据源中提取数据。


GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data. GraphQL provides a complete and understandable description of the data in your API, gives clients the power to ask for exactly what they need and nothing more, makes it easier to evolve APIs over time, and enables powerful developer tools.


GraphQL相较于REST以及其它Web Service架构提供了一种更加高效、强大和灵活的开发Web APIs的方式。它通过由客户端根据所需定义数据结构,同时由服务端负责返回相同数据结构的对应数据的方式避免了服务端大量冗余数据的返回,但与此同时也意味着这种方式不能有效利用起查询结果的Web缓存。GraphQL这种查询语言所带来的灵活性和丰富性的同时也增加了复杂性,导致简单的APIs有可能并不适合这种方式。支持数据读取、写入(操作)和数据变更订阅(实时更新)。

GraphQL的服务端在多个语言都有实现包括Haskell, JavaScript, Python,Ruby, Java, C#, Scala, Go, Elixir,Erlang, PHP, R 和 Clojure。2018年2月9日GraphQL的部分模式定义语言(SDL)规范制定完成。


REST API 也称为 RESTful API,是遵循 REST 架构规范的应用编程接口(API 或 Web API),支持与 RESTful Web 服务进行交互。REST 是表述性状态传递的英文缩写(Representational State Transfer),由计算机科学家 Roy Fielding 在 2000 年提出。它的简单易用性,可扩展性,伸缩性受到广大 Web 开发者的喜爱。


官方主页:https://graphql.org/