GraphQL分享理論篇
前陣子在公司內部分享了GraphQL,今天抽空總結並補充一下:
目前專案開發比較流行的是前臺後分離模式,後臺提供介面,前臺呼叫介面,介面書寫遵循流行的RESTful API規範
- REST 由 Roy Thomas Fielding 在他2000年的博士論文中提出的。
- REST,即 Representational State Transfer(表述性狀態傳遞) 的縮寫。
- 如果一個架構符合 REST 原則, 就稱它為 RESTful 架構
RESTful API 特點
- 每一個 URI 代表一種資源;
- 充分利用 HTTP 協議本身語義;
- 客戶端和伺服器器之間,傳遞這種資源的某種表現層;
- 客戶端通過四個 HTTP 動詞,對伺服器器端資源進行操作,實現 ” 表現層狀態轉化 ” 。
RESTful API 缺陷
- 一個介面僅操作單一資源
- 各個資源是獨立的,完成一個頁面需要呼叫多個介面
- 資料冗餘,靈活性差
- 需專門維護文件 (v1, v2)
有時候開啟某個頁面,我們需要呼叫多個介面。
有時候我們不需要的欄位後臺也給我們返回了,這是由後臺控制的。
而GraphQL可以完美的解決上面的問題
GraphQL是….
- Facebook 2012年開發,2015年開源
- 應用層的API查詢語言
- 在服務端的執行資料查詢語言的規範 (我建議你先抽半個小時瀏覽下心裡有個大概)
GraphQL的特點
- 強型別
- 單一入口
- 一個請求獲取所有所需資源
- 內省系統
為什麼叫GraphQL
圖(Graph)是一種複雜的非線性結構,在圖結構中,每個元素都可以有零個或多個前驅,也可以有零個或多個後繼,也就是說,元素之間的關係是任意的。
使用GraphQL 注意的問題
- 效能問題 (請求少了,但查詢多了)
- GraphQL 在前端如何與檢視層、狀態管理方案結合
- 安全, Limit, timeout N+1 查詢
關於從規範裡提煉的
- GraphQL是一種資料描述語言,而非程式語言,因此GraphQL缺乏用於描述數學表示式的標點符號。
- 註釋只能用 # ,可以使用末尾的逗號提高可讀性。
- GraphQL的命名是大小寫敏感的,也就是說name,Name,和NAME是不同的名字。
- 一個文件可以包含多個操作和片段的定義。一個查詢文件只有包含操作時,伺服器才能執行。
- 如果一個文件只有一個操作,那這個操作可以不帶命名或者簡寫,省略掉query關鍵字和操作名。
下一篇 實戰
相關文章
- RocketMQ - 理論篇MQ
- 跨域-理論篇跨域
- 微服務·理論篇(二)微服務
- REST與GraphQL的爭論REST
- PHP效能優化 -理論篇PHP優化
- linux下QOS:理論篇Linux
- 深入理解hashmap(二)理論篇HashMap
- 設計模式總結(理論篇)設計模式
- Laravel 之 Application---理論篇LaravelAPP
- Oracle體系結構理論篇Oracle
- State設計模式上篇(理論篇)設計模式
- 決策樹演算法-理論篇演算法
- H5直播入門(理論篇)H5
- React + Redux 效能優化(一):理論篇ReactRedux優化
- 【分享】五行理論的辯證思考
- 【機器學習】Logistic Regression 的前世今生(理論篇)機器學習
- 徹底征服 Spring AOP 之 理論篇Spring
- 程式集載入與反射(一):理論篇反射
- Netflix採用GraphQL的經驗分享
- 實現一個websocket伺服器-理論篇Web伺服器
- Nodejs測試:從0到90(理論篇)NodeJS
- 效能測試總結(一)---基礎理論篇
- 前端面試題目蒐集——理論知識篇前端面試題
- 金鑰和證書,純理論介紹篇
- 爬蟲(1) - 爬蟲基礎入門理論篇爬蟲
- web3從入門到實戰-理論篇Web
- 如何構建一個分散式爬蟲:理論篇分散式爬蟲
- 【SSH2(理論篇)】--Struts2配置詳解
- Java NIO5:選擇器1---理論篇Java
- Causal Inference理論學習篇-Tree Based-Causal Tree
- 分散式理論(二) - BASE理論分散式
- 理論
- 前端er瞭解GraphQL,看這篇就夠了前端
- 資訊理論理論學習筆記筆記
- iOS記憶體管理佈局及管理方案-理論篇iOS記憶體
- 響應式程式設計與MVVM架構—理論篇程式設計MVVM架構
- 機器學習基礎篇:支援向量機(SVM)理論與實踐機器學習
- 42、併發程式設計之多執行緒理論篇程式設計執行緒