跳至內容

GraphQL

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書
GraphQL
開發者Facebook及社區
首次發布2015年9月14日 (2015-09-14)
當前版本2018年6月 (2018-06)[1]
源代碼庫github.com/facebook/graphql
編程語言JavaScriptRubyScala和其他各種語言中實現。
操作系統跨平台
許可協議 編輯維基數據鏈接
網站graphql.org

GraphQL是一個開源的,面向API而創造出來的數據查詢操作語言以及相應的運行環境。[2] 於2012年仍處於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)規範制定完成。

例子

POST請求:

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

響應:

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

參見

參考文獻

  1. ^ GraphQL June 2018 Release Notes. [26 March 2019]. (原始內容存檔於2020-10-16). 
  2. ^ GraphQL: A query language for APIs.. [2018-11-08]. (原始內容存檔於2016-04-26). 
  3. ^ Facebook’s GraphQL gets its own open-source foundation. TechCrunch. [2018-11-07]. (原始內容存檔於2019-01-22) (美國英語). 
  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]. (原始內容存檔於2019-01-28) (美國英語). 
  5. ^ GraphQL vs REST: Overview. Phil Sturgeon. [2018-11-25]. (原始內容存檔於2019-04-08) (英國英語). 
  6. ^ Why use GraphQL, good and bad reasons. Honest Engineering. 2018-08-04 [2018-11-26]. (原始內容存檔於2018-11-26) (美國英語). 
  7. ^ GraphQL Fundamentals. Howto GraphQL. [2018-07-04]. (原始內容存檔於2018-07-05). 
  8. ^ GraphQL. facebook.github.io. Facebook. [2018-07-04]. (原始內容存檔於2018-07-18). 
  9. ^ Apollo Client: The flexible, production ready GraphQL client for React, and all JavaScript and native apps. [2019-01-24]. (原始內容存檔於2018-07-20). 
  10. ^ Relay: A JavaScript framework for building data-driven React applications. [2019-01-24]. (原始內容存檔於2019-01-29). 
  11. ^ Graphene. graphene-python.org. [2017-06-18]. (原始內容存檔於2015-10-12). 
  12. ^ Absinthe: The GraphQL toolkit for Elixir. [2018-07-19]. (原始內容存檔於2018-07-06). 

外部連結