GraphQL是為聚合統一而構建的 - thenewstack
當組織達到一定規模時,他們會圍繞團隊進行組織。團隊通常具有職能職責——營銷、財務、工程等。API 遵循類似的功能對齊方式;我們看到提供營銷功能(促銷、產品描述等)、電子商務功能(購物車等)、財務功能(訂單到現金等)的 API 集。這些 API 通常由專門的開發團隊獨立開發,即使在組織上它們可能在同一個工程組織中。
隨著組織在其 API 旅程中逐漸成熟,並且隨著 GraphQL 被用作下一波 API 技術,他們意識到必須將他們的 REST 用於 GraphQL API。關於將什麼公開為 GraphQL 的決定可以是集中的,也可以由職能團隊決定。隨著團隊和組織變得更大,一個常見的模式是將這些決策分散。因此,企業可能有一個營銷 GraphQL 端點、一個電子商務 GraphQL 端點和一個財務 GraphQL 端點,每個端點都由各自的團隊負責。
然而,現代數字體驗不僅僅建立在一種功能性 GraphQL API 上。例如,電子商務網站可能會結合營銷、電子商務和物流 GraphQL API,僅舉幾例。這些不同的 GraphQL API 如何整合到一個統一的 GraphQL 層中,從而構建這些數字體驗?
關於這些功能性 GraphQL API 如何組合成一個統一層,有多種術語:模式拼接和聯合是最常見的。
讓我們首先闡明構建這個統一的 GraphQL API 需要什麼:
- 這一層應該沒有業務邏輯。它應該主要是佈線和裝配層。換句話說,就電腦科學而言,這一層有責任將請求分散到正確的功能 GraphQL API 並收集結果以返回答案。
- GraphQL 層必須呼叫具有正確身份驗證和授權的功能性 GraphQL API。畢竟不同的功能可以選擇實現自己的機制。
- 它必須能夠處理常見錯誤,包括無響應
當您檢視上述注意事項時,該統一層所需的內容與構建任何其他一個功能性 GraphQL API 所需的內容之間只有一個區別:
功能性 GraphQL API 的後端可以是任何東西:REST、SOAP、資料庫;但這一統一層的後端完全是 GraphQL。
就是這樣!功能式 API 和統一的 GraphQL 層都需要能夠將多個後端連線在一起:
- 兩者都需要在前端和後端處理身份驗證和授權。
- 兩者都需要處理錯誤和效能問題。
在 StepZen 中,任何開發人員——無論是構建功能式 GraphQL API 還是在這一層——都使用四個概念:
- 每個後端公開一個迷你 GraphQL 子圖。這個子圖可以通過內省自動生成,從一些預製的公共端點中選擇,和/或通過將 @rest、@dbquery 和 @graphql 構造新增到手工編寫的 GraphQL 模式檔案 (SDL) 來編寫。
- 這些子圖可以通過使用@materializer 構造將一個子圖中的查詢/變異與另一個子圖中產生的資料連線在一起來連線在一起。
- 一個 YAML 配置檔案,包括對 API 和後端資料來源的訪問控制。該檔案與上面的圖表分開。
- API 和配置交給 StepZen 執行,系統負責優化、快取、錯誤處理等的標準方式。沒有執行或管理的基礎設施,我們保證您的 API 99.99% 的可用性。
使用這四個概念,開發人員可以利用之前對現有 API 和基礎設施的所有投資。
與此同時,組織和前端團隊可以獲得所有 API 都使用一個 GraphQL API 的所有額外好處。
相關文章
- 為建設而建設 ,為系統而系統
- BEAM和JVM虛擬機器對比:JVM是為並行而構建的,而BEAM是為併發構建的 | ErlangJVM虛擬機並行
- GraphQL初體驗,Node.js構建GraphQL API指南Node.jsAPI
- GraphQL介紹&使用nestjs構建GraphQL查詢服務JS
- 為什麼 GraphQL 是 API 的未來API
- 在 Laravel 應用中構建 GraphQL APILaravelAPI
- [譯] 關於使用 GRAPHQL 構建專案的回顧
- 微服務平臺下基於 GraphQL 構建 BFF 的思考微服務
- Web3架構與傳統Web的比較 - thenewstackWeb架構
- 構建Java Agent,而不是使用框架Java框架
- API架構的選擇,RESTful、GraphQL還是gRPCAPI架構RESTRPC
- AI是一個真正的系統而不僅僅是軟體AI
- 為媒體資產構建一個雲原生的檔案系統
- 使用Spring Boot和GraphQL構建靈活的API服務Spring BootAPI
- 為什麼我們選擇使用 React 而不是 Angular 構建新 UIReactAngularUI
- 前端構建大法Gulp系列(一):為什麼需要前端構建前端
- 如何構建一個系統?
- 複雜系統的有界上下文和聚合結構是如何定義的?
- 《PhoneGap精粹:構建跨平臺的移動App》——1.4節為容器而設計APP
- 系統記憶模式:事件溯源的力量,上下文為王! – thenewstack模式事件
- 為什麼微服務架構需要聚合微服務架構
- Atlas是一個為雲原生應用程式構建的開源部署管道平臺
- 根據意圖而不是架構構建程式 - Janos Pasztor架構
- Graphql學習(一)-GraphQL介紹
- 一個社交App是如何構建高伸縮性的互動式系統APP
- REST將會過時,而GraphQL則會長存REST
- 移動端API架構 統一Proxy還是各自為政?API架構
- Everest發行版從何構建而來?(轉)REST
- 手把手教你如何用Crawlab構建技術文章聚合平臺(一)
- Docker 構建統一的前端開發環境Docker前端開發環境
- 你是為了自己的利益而開源呢,還是為了所有人的利益?
- 杭州 GraphQLParty 第一場-GraphQL 資料聚合層解放前後端文字版後端
- Google 是如何構建 Web 框架的GoWeb框架
- Spring Cloud構建統一配置中心SpringCloud
- 多卡聚合路由器“快而穩、穩而強”優勢分析路由器
- 為什麼建議將安全性構建到系統中?
- 為什麼是“程式猿”而不是“程式媛”?
- 在 Laravel 中是用 GraphqlLaravel