ホームページ > ウェブフロントエンド > CSSチュートリアル > 複数のデータソースに単一のGraphQLを実装します

複数のデータソースに単一のGraphQLを実装します

Joseph Gordon-Levitt
リリース: 2025-03-20 09:43:13
オリジナル
695 人が閲覧しました

複数のデータソースに単一のGraphQLを実装します

この記事では、複数の動物相インスタンスにわたってスキーマステッチを示し、異なるデータソースから統一されたGraphQL APIを作成します。また、動物相と他のGraphQLサービスを組み合わせることも検討します。

スキーマステッチの理解

スキーマステッチは、複数の基礎となるGraphQL APIから単一のGraphQL APIを構築するための手法です。

なぜスキーマステッチを使用するのですか?

大規模なアプリケーションは、多くの場合、モジュール性のためにマイクロサービスを採用しています。ただし、クライアントアプリケーションは、多くの場合、複数のソースからのデータが必要です。 Unified 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 -yes
    ログイン後にコピー
  2. 依存関係をインストールします:

     NPM I Express Express-GraphQl Graphql @graphql-tools/schema @graphql-tools/stitch @graphql-tools/wrap cross-fetch  -  save
    ログイン後にコピー
  3. BASIC GRAPHQL SERVER(gateway.js):シンプルなExpress GraphQL Serverから始めます。

     // gateway.js(初期バージョン)
    // ...(Express Serverセットアップ)...
    ログイン後にコピー

    (この最初のコードは、元の例と同様のBare-Bonesサーバーになりますが、ステッチの側面に焦点を合わせるためにBrevityが省略されます。)

  4. FAUNAデータベースのセットアップ: 3つの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への展開:サーバーレスフレームワークを使用して、GatewayをAWS Lambda関数に展開します。必要な依存関係( serverlessserverless-httpbody-parser )をインストールします。 serverless.yamlファイルを作成します(元のファイルに示すように)。 gateway.js変更して、適切なLambda機能処理のためにserverless-httpと統合します。 serverless deploy

結論

Schema Stitchingは、複数のデータソースからスケーラブルで保守可能なGraphQL APIを構築するための強力なソリューションを提供します。この記事ではFaunaとAWS Lambdaを使用していますが、原則は他のGraphQLサービスやサーバーレスプラットフォームに広く適用されます。 Apollo Federationのような代替アプローチは、同様の機能を提供します。

以上が複数のデータソースに単一のGraphQLを実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート