什麼是 GraphQL?

2023年3月7日

💎 加入 E+ 成長計畫 與超過 300+ 位軟體工程師一同在社群中成長,並且獲得更多的軟體工程學習資源

GraphQL 簡介

GraphQL 是一種用於 API 的查詢語言。它由 Facebook 於 2015 年開發,並在 2018 年開源。 GraphQL 使客戶端可以精確地請求它們需要的數據,並且能夠減少不必要的數據傳輸。與傳統的 REST API 不同,GraphQL 使用單個端點來提供所有請求的數據,客戶端可以使用 GraphQL 查詢語言來描述需要的數據,這使得查詢更加靈活和可控。

延伸閱讀

Client-Server 流程

Client-Server 流程
Client-Server 流程

如上圖所示,Client 在傳送 QraphQL 的 query 時,並非為真的 JSON 格式,而是一個字串;而 Server 收到字串後會去驗證其 query 的有效性,並和資料庫或許相對應的資料傳回給 Client。

GraphQL API Call
GraphQL API Call
圖片來源:https://hasura.io/learn/graphql/intro-graphql/graphql-vs-rest/

從上面動畫就可以發現,使用 GraphQL 就可以輕易的獲取想要的欄位與資料,也能清楚知道哪個 Client 獲取了哪些資料回去使用。

GraphQL 優缺點比較

優點

  • 精準獲取數據:GraphQL 允許客戶端可以精確地獲取它們需要的數據,而無需獲取整個資源。
  • 減少網絡傳輸:由於客戶端只需要發出一次請求,就可以獲取多個資源的數據,因此可以減少網絡傳輸次數,從而提高性能和速度。
  • 靈活性和可擴展性:GraphQL 具有靈活的查詢語言,使得客戶端可以輕鬆地查詢它們需要的數據,並可以輕鬆地添加新的查詢字段和數據類型。
  • 類型系統:GraphQL 具有強大的類型系統,使得客戶端和服務器端能夠更好地理解 API 的數據結構,並減少錯誤發生的概率。
  • 緩存:GraphQL 查詢具有標準化的結構,這意味著客戶端可以使用緩存來避免不必要的網絡請求。
  • 前後端獨立:GraphQL 允許前端和後端團隊獨立開發,因為客戶端可以根據需要查詢所需數據,而無需與後端團隊進行過多的溝通。

缺點

  • 學習曲線:相對於 REST API,GraphQL 對於前端和後端開發人員都需要較長的學習曲線。這是因為 GraphQL 涉及到復雜的類型系統、查詢語言和執行機制等概念。
  • 複雜性:GraphQL 的靈活性和可擴展性是它的優點,但也使得它更加複雜。對於簡單的 API,GraphQL 可能是一種過度的解決方案,因為它需要開發人員投入更多的精力來設計、實現和維護它。
  • 性能:雖然 GraphQL 可以減少網絡傳輸,但它也可能導致性能問題。這是因為 GraphQL 查詢語句中可能包含大量嵌套的字段和復雜的查詢,這可能會導致查詢執行時間較長,從而影響 API 的響應時間。
  • 安全性:與 REST API 不同,GraphQL API 允許客戶端查詢需要的任何數據。這可能會導致安全漏洞,如數據洩露和暴露 API 的敏感信息。因此,需要採取措施來確保 GraphQL API 的安全性,如鑑權和授權等。

相關文章

🧵 如果你想收到最即時的內容更新,可以在 FacebookInstagram 上追蹤我們