什麼是 GraphQL?
2023年3月7日
💎 加入 E+ 成長計畫 如果你喜歡我們的內容,歡迎加入 E+,獲得更多深入的軟體前後端內容
GraphQL 簡介
GraphQL 是一種用於 API 的查詢語言。它由 Facebook 於 2015 年開發,並在 2018 年開源。 GraphQL 使客戶端可以精確地請求它們需要的數據,並且能夠減少不必要的數據傳輸。與傳統的 REST API 不同,GraphQL 使用單個端點來提供所有請求的數據,客戶端可以使用 GraphQL 查詢語言來描述需要的數據,這使得查詢更加靈活和可控。
延伸閱讀
Client-Server 流程
如上圖所示,Client 在傳送 QraphQL 的 query 時,並非為真的 JSON 格式,而是一個字串;而 Server 收到字串後會去驗證其 query 的有效性,並和資料庫獲取相對應的資料傳回給 Client。
從上面動畫就可以發現,使用 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 的安全性,如鑑權和授權等。