type Project { name: String tagline: String contributors: [User]}
{ project(name: "GraphQL") { tagline }}
{ "project": { "tagline": "A query language for APIs" }}
GraphQL 是 API 的查詢語言,也是用於以您現有資料滿足這些查詢的執行時間。GraphQL 提供 API 中資料的完整且可理解的描述,讓客戶端能夠確切地詢問他們需要什麼,而且不會更多,讓 API 隨著時間推移更容易演進,並啟用強大的開發人員工具。
將 GraphQL 查詢傳送至您的 API,並確切地取得您需要的內容,不多也不少。GraphQL 查詢總是傳回可預測的結果。使用 GraphQL 的應用程式快速且穩定,因為它們控制取得的資料,而不是伺服器。
GraphQL 查詢不僅存取單一資源的屬性,還能順利追蹤它們之間的參考。雖然典型的 REST API 需要從多個 URL 載入,但 GraphQL API 會在單一要求中取得您的應用程式所需的所有資料。使用 GraphQL 的應用程式即使在行動網路連線速度較慢的情況下也能快速運作。
GraphQL API 是以類型和欄位組織,而不是端點。從單一端點存取資料的完整功能。GraphQL 使用類型來確保應用程式只詢問可能性,並提供明確且有用的錯誤。應用程式可以使用類型來避免撰寫手動剖析程式碼。
在不離開編輯器的狀況下,確切知道可以從 API 請求哪些資料,在傳送查詢之前突顯潛在問題,並利用進階的程式碼智能。GraphQL 讓您可以輕鬆建置強大的工具,例如 GraphiQL ,方法是利用您的 API 類型系統。
在不影響現有查詢的狀況下,新增欄位和類型至您的 GraphQL API。過時的欄位可以標示為已棄用並從工具中隱藏。透過使用單一演化版本,GraphQL API 能讓應用程式持續存取新功能,並鼓勵更簡潔、更容易維護的伺服器程式碼。
GraphQL 在您的整個應用程式中建立統一的 API,不受特定儲存引擎的限制。撰寫 GraphQL API,利用您現有的資料和程式碼,搭配許多語言中提供的 GraphQL 引擎。您提供類型系統中每個欄位的函式,而 GraphQL 會以最佳並行度呼叫它們。
自 2012 年以來,Facebook 的行動應用程式一直由 GraphQL 提供支援。GraphQL 規範於 2015 年開放原始碼,現已在許多環境中提供,並由各種規模的團隊使用。