GraphQL 與 REST如何選擇,請參考《GraphQL 和 REST 怎么選擇?》一文。
核心理念:一切皆是圖
> 使用 GraphQL,你可以將你所有的業(yè)務(wù)建模為圖
圖是將很多真實世界現(xiàn)象變成模型的強大工具,因為它們和我們自然的心智模型和基本過程的口頭描述很相似。通過 GraphQL,你會把自己的業(yè)務(wù)領(lǐng)域通過定義 schema 建模成一張圖;在你的 schema 里,你定義不同類型的節(jié)點以及它們之間是如何連接的。在客戶端這邊,這創(chuàng)建了一種類似于面向?qū)ο缶幊痰哪J剑阂闷渌愋偷念愋?。在服?wù)器端,由于 GraphQL 定義了接口,你可以在任何后端自由的使用它(無論新舊?。?。
GraphQL工作原理
GraphQL 通過 HTTP 提供服務(wù)。
### GraphQL 的優(yōu)點
- GraphQL 模式會在 GraphQL 應(yīng)用中設(shè)置單一事實來源。它為企業(yè)提供了一種整合其整個 API 的方法。
- 一次往返通訊可以處理多個 GraphQL 調(diào)用。客戶端可得到自己所請求的內(nèi)容,不會超量。
- 嚴格定義的數(shù)據(jù)類型可減少客戶端與服務(wù)器之間的通信錯誤。
- GraphQL 具有自檢功能??蛻舳丝梢哉埱笠粋€可用數(shù)據(jù)類型的列表。這非常適合文檔的自動生成。
- GraphQL 允許應(yīng)用 API 進行更新優(yōu)化,而無需破壞現(xiàn)有查詢。
- 許多開源 GraphQL 擴展可提供 REST API 所不具備的功能。
- GraphQL 不指定特定的應(yīng)用架構(gòu)。它能夠以現(xiàn)有的 REST API 為基礎(chǔ),并與現(xiàn)有的 API 管理工具配合使用。
GraphQL 的缺點
- 即便是熟悉 REST API 的開發(fā)人員,也需要一定時間才能掌握 GraphQL。
- GraphQL 將數(shù)據(jù)查詢的大部分工作都轉(zhuǎn)移到服務(wù)器端,由此增加了服務(wù)器開發(fā)人員工作的復(fù)雜度。
- 根據(jù)不同的實施方式,GraphQL 可能需要不同于 REST API 的 API 管理策略,尤其是在考慮速率限制和定價的情況下。
- 緩存機制比 REST 更加復(fù)雜。
- API 維護人員還會面臨編寫可維護 GraphQL 模式的額外任務(wù)。
一站搜索、試用、比較全球API!
試用API,一次比較多個渠道