首頁 > web前端 > css教學 > 跨多個數據源實現單個GraphQl

跨多個數據源實現單個GraphQl

Joseph Gordon-Levitt
發布: 2025-03-20 09:43:13
原創
686 人瀏覽過

跨多個數據源實現單個GraphQl

本文展示了跨多個動物群實例縫製的架構,從而從不同的數據源創建了統一的GraphQl API。我們還將探索將動物區係與其他GraphQL服務相結合。

了解模式縫線

架構縫線是一種從多個基礎GraphQl API構建單個GraphQl API的技術。

為什麼要使用模式縫線?

大規模應用通常採用微服務用於模塊化。但是,客戶端應用程序經常需要來自多個來源的數據。統一的GraphQl API提供了一個乾淨的接口,但是構建單片服務器可能會出現問題。 Fauna的每個數據庫的本機GraphQl是理想的,但是多個數據庫需要連接到多個實例,從而創建緊密的耦合。模式縫合通過將多個GraphQl服務組合到單個統一的模式中來解決此問題。本文涵蓋:

  1. 將多個FAUNA實例集成到單個GraphQl服務中。
  2. 將動物群與其他GraphQL API和數據源相結合。
  3. 使用AWS lambda創建無服務器GraphQL網關。

合併多個動物群實例

讓我們將多個FAUNA數據庫實例(例如, ProductInventoryReview )組合到單個GraphQL服務中。每個數據庫都有自己的GraphQl API(子圖)。我們的目標是用於客戶端應用程序的統一圖,以查詢所有來源的數據。

該統一的圖將是我們的網關服務。我們將使用node.js構建它。

  1. 項目設置:創建一個node.js項目:

     mkdir my-gateway
    CD My-Gateway
    NPM Init-是的
    登入後複製
  2. 安裝依賴項:

     npm i express-express-graphql graphql @graphql-tools/schema @graphql-tools/stitch @graphql-tools/wrap cross-fetch-save -save-save-save-save
    登入後複製
  3. 基本GraphQl Server(gateway.js):從簡單的Express GraphQl Server開始:

     // Gateway.js(初始版本)
    // ...(Express Server設置)...
    登入後複製

    (此初始代碼將是類似於原始示例的裸孔服務器,但省略了簡潔的專注於縫合方面。)

  4. FAUNA數據庫設置:創建三個FAUNA數據庫( ProductInventoryReview )並生成管理密鑰。為每個數據庫定義GraphQL模式(如原始示例所示)。

  5. Gateway Service Enhancement(Gateway.js):使用@graphql-tools/stitch實現模式縫製。本節將包括原始描述的makeRemoteExecutormakeGatewaySchema功能,但具有改善的清晰度,並有可能重構以更好地可讀性。主要改進將是:

    • 清晰的評論解釋了每個功能的目的。
    • API呼叫的錯誤處理。
    • 通過環境變量而不是硬編碼的API鍵配置。
  6. 縫製第三方API:將網關擴展到使用相同的makeRemoteExecutorstitchSchemas方法包括第三方GraphQl API(例如SpaceX API)。

  7. 部署到AWS lambda:使用無服務器框架將網關部署到AWS lambda功能。安裝必要的依賴項( serverlessserverless-httpbody-parser )。創建一個serverless.yaml文件(如原始文件所示)。修改gateway.js ,與serverless-http集成以進行適當的lambda功能處理。使用serverless deploy部署。

結論

模式縫合為從多個數據源構建可擴展和可維護的GraphQL API提供了強大的解決方案。儘管本文使用Fauna和AWS Lambda,但這些原則廣泛應用於其他GraphQL服務和無服務器平台。阿波羅聯合會(Apollo Federation)等替代方法提供了類似的功能。

以上是跨多個數據源實現單個GraphQl的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板