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

跨多個數據源實現單個GraphQl

Mar 20, 2025 am 09:43 AM

跨多個數據源實現單個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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Java教學
1653
14
CakePHP 教程
1413
52
Laravel 教程
1306
25
PHP教程
1251
29
C# 教程
1224
24
Google字體可變字體 Google字體可變字體 Apr 09, 2025 am 10:42 AM

我看到Google字體推出了新設計(Tweet)。與上一次大型重新設計相比,這感覺更加迭代。我幾乎無法分辨出區別

如何使用HTML,CSS和JavaScript創建動畫倒計時計時器 如何使用HTML,CSS和JavaScript創建動畫倒計時計時器 Apr 11, 2025 am 11:29 AM

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

HTML數據屬性指南 HTML數據屬性指南 Apr 11, 2025 am 11:50 AM

您想了解的有關HTML,CSS和JavaScript中數據屬性的所有信息。

如何通過CSS選擇第一個類名為item的子元素? 如何通過CSS選擇第一個類名為item的子元素? Apr 05, 2025 pm 11:24 PM

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

為什麼Flex佈局中的紫色斜線區域會被誤認為是'溢出空間”? 為什麼Flex佈局中的紫色斜線區域會被誤認為是'溢出空間”? Apr 05, 2025 pm 05:51 PM

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

使Sass更快的概念證明 使Sass更快的概念證明 Apr 16, 2025 am 10:38 AM

在一個新項目開始時,Sass彙編發生在眼睛的眨眼中。感覺很棒,尤其是當它與browsersync配對時,它重新加載

在前端開發中,如何使用CSS和JavaScript實現類似Windows 10設置界面的探照燈效果? 在前端開發中,如何使用CSS和JavaScript實現類似Windows 10設置界面的探照燈效果? Apr 05, 2025 pm 10:21 PM

在前端開發中如何實現類似Windows...

我們如何創建一個在SVG中生成格子呢模式的靜態站點 我們如何創建一個在SVG中生成格子呢模式的靜態站點 Apr 09, 2025 am 11:29 AM

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

See all articles