GraphQL

维基百科,自由的百科全书
跳到导航 跳到搜索
GraphQL
GraphQL Logo.svg
開發者 Facebook及社区
初始版本 2015年 (2015)
穩定版本
穩定版本
2016年10月[1]
開發狀態 活跃
编程语言JavaScriptRubyScala和其他各种语言中实现。
操作系统 跨平台
網站 graphql.org
源代码库 github.com/facebook/graphql

GraphQL是一个开源的API数据查询和操作语言及实现为了实现上述操作的相应运行环境。[2] 2012年,GraphQL由Facebook内部开发,2015年公开公布。 2018年11月7日,Facebook将GraphQL项目转移到新成立的GraphQL基金会(隶属于非营利性的Linux基金会)。[3][4]

GraphQL相较于REST以及其他web service架构提供了一种高效、强大和灵活的开发web APIs的方式。它通过由客户端根据所需定义数据结构,同时由服务端负责返回相同数据结构的对应数据的方式避免了服务端大量冗余数据的返回,但与此同时也意味着这种方式不能有效利用起查询结果的web缓存。GraphQL这种查询语言所带来的灵活性和丰富性的同时也增加了复杂性,使得这项技术对于简单APIs并不是好的选择。[5][6][7]

GraphQL支持数据读取、写入(操作)和数据变更订阅(实时更新)。[8]

主要的GraphQL客户端有Apollo Client[9] 和 Relay.[10] GraphQL的服务端在多个语言都有实现包括Haskell, JavaScript, Python,[11] Ruby, Java, C#, Scala, Go, Elixir,[12] Erlang, PHP, R,和 Clojure.

2018年2月9日GraphQL的部分模式定义语言(SDL)规范制定完成。

参见[编辑]

  • Query by Example

参考文献[编辑]

  1. ^ GraphQL October2016 Release Notes. [2018-01-16]. 
  2. ^ GraphQL: A query language for APIs.. 
  3. ^ Facebook’s GraphQL gets its own open-source foundation. TechCrunch. [2018-11-07] (美国英语). 
  4. ^ The Linux Foundation Announces Intent to Form New Foundation to Support GraphQL - The Linux Foundation. The Linux Foundation. 2018-11-06 [2018-11-07] (美国英语). 
  5. ^ GraphQL vs REST: Overview. Phil Sturgeon. [2018-11-25] (英国英语). 
  6. ^ Why use GraphQL, good and bad reasons. Honest Engineering. 2018-08-04 [2018-11-26] (美国英语). 
  7. ^ GraphQL Fundamentals. Howto GraphQL. [2018-07-04]. 
  8. ^ GraphQL. facebook.github.io. Facebook. [2018-07-04]. 
  9. ^ Apollo Client: The flexible, production ready GraphQL client for React, and all JavaScript and native apps. 
  10. ^ Relay: A JavaScript framework for building data-driven React applications. 
  11. ^ Graphene. graphene-python.org. [2017-06-18]. 
  12. ^ Absinthe: The GraphQL toolkit for Elixir. [2018-07-19]. 

外部链接[编辑]