GraphQL是一个开源的,面向API而创造出来的数据查询操作语言以及相应的运行环境。[2] 于2012年仍处于Facebook内部开发阶段,直到2015年才公开发布。 2018年11月7日,Facebook将GraphQL项目转移到新成立的GraphQL基金会(隶属于非营利性的Linux基金会)。[3][4]

Quick Facts 开发者, 首次发布 ...
GraphQL
开发者Facebook及社区
首次发布2015年9月14日 (2015-09-14)
当前版本2018年6月 (2018-06)[1]
原始码库github.com/facebook/graphql
编程语言JavaScriptRubyScala和其他各种语言中实现。
操作系统跨平台
许可协议 编辑维基数据链接
网站graphql.org
Close

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)规范制定完成。

例子

POST请求:

{
    orders {
        id
        productsList {
            product {
                name
                price
            }
            quantity
        }
        totalAmount
    }
}

响应:

{
    "data": {
        "orders": [
            {
                "id": 1,
                "productsList": [
                    {
                        "product": {
                            "name": "orange",
                            "price": 1.5
                        },
                        "quantity": 100
                    }
                ],
                "totalAmount": 150
            }
        ]
    }
}

参见

参考文献

外部链接

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.