跨多個數據源實現單個GraphQl
本文展示了跨多個動物群實例縫製的架構,從而從不同的數據源創建了統一的GraphQl API。我們還將探索將動物區係與其他GraphQL服務相結合。
了解模式縫線
架構縫線是一種從多個基礎GraphQl API構建單個GraphQl API的技術。
為什麼要使用模式縫線?
大規模應用通常採用微服務用於模塊化。但是,客戶端應用程序經常需要來自多個來源的數據。統一的GraphQl API提供了一個乾淨的接口,但是構建單片服務器可能會出現問題。 Fauna的每個數據庫的本機GraphQl是理想的,但是多個數據庫需要連接到多個實例,從而創建緊密的耦合。模式縫合通過將多個GraphQl服務組合到單個統一的模式中來解決此問題。本文涵蓋:
- 將多個FAUNA實例集成到單個GraphQl服務中。
- 將動物群與其他GraphQL API和數據源相結合。
- 使用AWS lambda創建無服務器GraphQL網關。
合併多個動物群實例
讓我們將多個FAUNA數據庫實例(例如, Product
, Inventory
, Review
)組合到單個GraphQL服務中。每個數據庫都有自己的GraphQl API(子圖)。我們的目標是用於客戶端應用程序的統一圖,以查詢所有來源的數據。
該統一的圖將是我們的網關服務。我們將使用node.js構建它。
-
項目設置:創建一個node.js項目:
mkdir my-gateway CD My-Gateway NPM Init-是的
登入後複製 -
安裝依賴項:
npm i express-express-graphql graphql @graphql-tools/schema @graphql-tools/stitch @graphql-tools/wrap cross-fetch-save -save-save-save-save
登入後複製 -
基本GraphQl Server(gateway.js):從簡單的Express GraphQl Server開始:
// Gateway.js(初始版本) // ...(Express Server設置)...
登入後複製(此初始代碼將是類似於原始示例的裸孔服務器,但省略了簡潔的專注於縫合方面。)
FAUNA數據庫設置:創建三個FAUNA數據庫(
Product
,Inventory
,Review
)並生成管理密鑰。為每個數據庫定義GraphQL模式(如原始示例所示)。-
Gateway Service Enhancement(Gateway.js):使用
@graphql-tools/stitch
實現模式縫製。本節將包括原始描述的makeRemoteExecutor
和makeGatewaySchema
功能,但具有改善的清晰度,並有可能重構以更好地可讀性。主要改進將是:- 清晰的評論解釋了每個功能的目的。
- API呼叫的錯誤處理。
- 通過環境變量而不是硬編碼的API鍵配置。
縫製第三方API:將網關擴展到使用相同的
makeRemoteExecutor
和stitchSchemas
方法包括第三方GraphQl API(例如SpaceX API)。部署到AWS lambda:使用無服務器框架將網關部署到AWS lambda功能。安裝必要的依賴項(
serverless
,serverless-http
,body-parser
)。創建一個serverless.yaml
文件(如原始文件所示)。修改gateway.js
,與serverless-http
集成以進行適當的lambda功能處理。使用serverless deploy
部署。
結論
模式縫合為從多個數據源構建可擴展和可維護的GraphQL API提供了強大的解決方案。儘管本文使用Fauna和AWS Lambda,但這些原則廣泛應用於其他GraphQL服務和無服務器平台。阿波羅聯合會(Apollo Federation)等替代方法提供了類似的功能。
以上是跨多個數據源實現單個GraphQl的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

您是否曾經在項目上需要一個倒計時計時器?對於這樣的東西,可以自然訪問插件,但實際上更多

在元素個數不固定的情況下如何通過CSS選擇第一個指定類名的子元素在處理HTML結構時,常常會遇到元素個數不�...

關於Flex佈局中紫色斜線區域的疑問在使用Flex佈局時,你可能會遇到一些令人困惑的現象,比如在開發者工具(d...

格子呢是一塊圖案布,通常與蘇格蘭有關,尤其是他們時尚的蘇格蘭語。在Tartanify.com上,我們收集了5,000多個格子呢
