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