2023/6/20 by Jory Burson
在快速變化的軟體開發世界中,隨時掌握最新技術和最佳實務至關重要。GraphQL 是一種用於 API 的查詢語言,由於其在擷取資料方面的彈性和效率而獲得極大的歡迎。為了更深入探討 GraphQL 的領域及其影響,最近與 The Guild 的成員舉辦了一場問答環節,The Guild 是一個由開源貢獻者組成的組織,提供了寶貴的見解和建議。讓我們探索這次環節的重點,並更深入了解 GraphQL 的力量。
開源組織的哲學和結構
在問答環節中,The Guild 成員強調他們的組織成立的主要目的是為了長期維護開源。這個決定讓組織以不同的方式架構小組的工作,例如將他們所有的專案放在個別貢獻者的名稱下,而不是放在 The Guild 的 GitHub 組織 下,例如 Yoga、Mesh 和 其他。
他們也專注於在加入 The Guild 之前就已經是社群貢獻者的雇用人員,以確保他們支援現有的開源貢獻者,並減少在選擇過程中偏見(專注於個人的工作,而不是他們的所在地或身分)。這導致了一個來自全球各地的多元團隊,他們在 關於我們的頁面 中寫了更多關於該模型的內容。
在問答環節中,The Guild 強調他們對當地 Meetup 小組的支持,以及他們協助建立新小組的歷史。這種對社群參與的承諾反映了他們致力於促進知識分享和協作,這對於永續的開源專案至關重要。
使用 Envelop 進行授權和防護
The Guild 團隊建議使用 Envelop,一個用於處理執行流程的插件系統,用於 GraphQL API 中的授權和防護。這種方法提供了一個強大的替代方案,直接包裝解析器,確保穩健的安全措施到位。透過利用 Envelop,開發人員可以增強其 GraphQL API 中的授權控制。
使用 Postgres 的列級安全性進行細緻的授權控制
除了 Envelop 之外,討論重點還包括使用 Postgres 的列級安全性,作為達成更精細授權控制的一種方式。此功能讓開發人員可以在資料庫層級定義安全性政策,確保只有經過授權的使用者可以存取特定資料列。透過納入 Postgres 的列級安全性,開發人員可以進一步強化其 GraphQL API,防止未經授權的存取。
「非規格」GraphQL 和 Envelop/Yoga 外掛的優點
討論中也提到使用「非規格」GraphQL 功能的好處。有了 Envelop,您可以在官方規格中包含這些功能之前,安全地使用 進階 GraphQL 功能,而官方規格的發布頻率較低。
這些工具提供了額外的功能和最佳化,讓開發人員可以在其專案中最大化 GraphQL 的潛力。The Guild 團隊強調探索這些選項的價值,以提升效能並簡化開發流程,同時也提供有價值的回饋給 GraphQL 工作小組,說明這些功能在實際製作中的使用狀況。
快取 GraphQL 作業
與會者提出了關於快取 GraphQL 作業的有趣觀點。The Guild 團隊承認將快取加入 GraphQL 請求、最佳化回應時間並減少不必要的網路流量的潛在優點。有人提出,與 REST 相比,GraphQL 可以實現更精細的快取,而人們認為 GraphQL 中的快取更困難的主要原因是缺乏關於 Stellate 和 Yoga 的回應快取支援 等工具的知識。
大規模的 GraphQL 工作流程
在討論大規模使用 GraphQL 時,The Guild 與會者參考了他們協助大型團隊使用工作流程和工具管理 GraphQL API 的一些工作,例如 GraphQL Hive,一個開源的架構註冊表。最近發布到 Hive 的一些 新功能,例如 架構政策功能,使組織能夠自動在許多不同的團隊中強制執行最佳實務和架構規則。
社群管理和未來的合作
The Guild 團隊承認社群貢獻的重要性,並討論他們改善和簡化 GraphQL 社群網站 的努力,並強調培養一個充滿活力的包容性 GraphQL 社群的重要性。與 The Guild 的問答環節提供了豐富的知識和洞察,深入了解 GraphQL 的世界。此外,此環節重點介紹了改進領域和社群成員貢獻的機會。如需更多資訊,請查看 The Guild 的專案 和 部落格,以及我們的 GraphQL 官方社群頁面。
隨著 GraphQL 生態系統持續演進,像這樣的環節提供有價值的指導,並在開發人員之間培養社群意識,為我們令人興奮的生態系統中的創新和成長鋪路。請 在 6 月 28 日加入我們,參加我們下一次 Discord 問答 環節,特色是來自 Hasura 的工程領導。