GraphQL 學習手冊(繁體書版本)- 了解什麼是 GraphQL


粗略的 GraphQL 學習筆記記錄

GraphQL (Graph Query Language)

根據英文的 Query Language 可以了解到 GraphQL 是用來提供 API 使用的查詢語言,通常會透過 HTTP 傳輸。
是一種 (declarative) 宣告式資料語言,只要要列出哪些資料,而不需要知道這些字料是怎麼列出來的。
GraphQL 的規格主要是規定型態系統的執行與驗證引擎,可以拿來當作指南,用使用者習慣的語言來建立、與設計個人專案。

GraphQL github 文件

GraphQL 跟 REST 的差異

GraphQL 主要可以解決 REST 的兩種問題:

  1. Overfetch
    • 發資料請求時,只需要特定欄位的其中一個資料,而不是整包完整的資訊,但是 REST 只能每次回傳一整包文件。
  2. Underfetch
    • 有時需要透過前一次獲取的資料發出第二次以上的請求,才能得到想要的資料,如果次數、或是資料數量龐大,會拉長資料擷取的時間,降低使用者體驗。

這時 GraphQL 可以解決 REST 缺乏彈性的問題。

GraphQL 的 graph

graph 也就是英文的圖,這邊書本將虛擬的資料視覺化的概念,將每一筆資料想像成一個圓形的節點,當他與其他資料有關聯時,就能透過線進行連接,在一片白紙上,就可以形成像是族譜的樹狀圖、星象中北斗七星或是其他星座的樣子、或是台北捷運的地圖等關係圖。

schema

GraphQL 是 Schema Definition Language,當設計好 GraphQL schema 文件定義好使用型態後,像是寫好如何打開大門的密碼,其他人皆可以根據定義好的型態與資料進行互動。

  • 純量型態 Basic Types:Int/Float/String/Boolean/ID

query

  • 當 query (取得 GraphQL 資料的方式為 query) GraphQL 時, 會根據 query 上設定的欄位,回傳 JSON 資料格式的內容。
    • query 的內容格式是可以 loop 過相關的物件內容,意思是可以同時取得兩種以上類型的資料,甚至是子節點的特定內容,避免在 RESTFUL API 中遇到多次請求 HTTP 的情況。
  • query 時需要透過 type system 進行驗證,也就是最剛開始在 GraphQL schema 中就會先定義好 query 資料的型態與是否為 null 値。

GraphQL 還有其他很多功能需要去理解與消化,part1 暫時到這邊,感謝大家的閱讀,歡迎留言與提供意見~

簡短心得
第一次從完整書本的角度理解一個新的知識點,發現比圓心吃力的看官方文件更快速,感覺是先理解一些關鍵的專有名詞,快速熟悉來龍去脈,再透過官方網站的說明去理解使用方法,省去了看文件時不時停下來,重新 google 關鍵字的學習時間,但是偶爾還是會習慣性地在搭配一些影音一同學習,加速理解與轉化。
嘗試轉化成文字的過程有點痛苦,希望下次可以更有效率的轉化文字,同時也更精準地表達出自己理解的內容。

#graphql ##寫作松 #LearningNote #軟體開發
GraphQL學習指南
GraphQL學習指南
作者 (美)伊芙·波塞洛(Eve Porcello) 歷克斯·班克斯(Alex Banks) / 出版社 機械工業

2019-06-01








你可能感興趣的文章

Day00

Day00

Golang中的字元

Golang中的字元

後端資料庫欄位型態與實作 Cookie

後端資料庫欄位型態與實作 Cookie






留言討論