この記事では、複数の動物相インスタンスにわたってスキーマステッチを示し、異なるデータソースから統一されたGraphQL APIを作成します。また、動物相と他のGraphQLサービスを組み合わせることも検討します。
スキーマステッチの理解
スキーマステッチは、複数の基礎となるGraphQL APIから単一のGraphQL APIを構築するための手法です。
なぜスキーマステッチを使用するのですか?
大規模なアプリケーションは、多くの場合、モジュール性のためにマイクロサービスを採用しています。ただし、クライアントアプリケーションは、多くの場合、複数のソースからのデータが必要です。 Unified GraphQL APIはクリーンなインターフェイスを提供しますが、モノリシックサーバーの構築には問題があります。 FaunaのデータベースごとのネイティブGraphQLは理想的ですが、複数のデータベースには複数のインスタンスに接続して、タイトな結合が作成される必要があります。スキーマステッチは、複数のGraphQLサービスを単一の統一されたスキーマに組み合わせることにより、これを解決します。この記事では:
複数の動物相インスタンスを統合します
複数のFAUNAデータベースインスタンス( Product
、 Inventory
、 Review
)を単一のGraphQLサービスに組み合わせてみましょう。各データベースには、独自のGraphQL API(サブグラフ)があります。私たちの目標は、すべてのソースでデータを照会するためのクライアントアプリケーションの統一グラフです。
この統一されたグラフは、ゲートウェイサービスになります。 node.jsを使用してこれを構築します。
プロジェクトのセットアップ: node.jsプロジェクトを作成します:
mkdir my-gateway CD My-Gateway npm init -yes
依存関係をインストールします:
NPM I Express Express-GraphQl Graphql @graphql-tools/schema @graphql-tools/stitch @graphql-tools/wrap cross-fetch - save
BASIC GRAPHQL SERVER(gateway.js):シンプルなExpress GraphQL Serverから始めます。
// gateway.js(初期バージョン) // ...(Express Serverセットアップ)...
(この最初のコードは、元の例と同様のBare-Bonesサーバーになりますが、ステッチの側面に焦点を合わせるためにBrevityが省略されます。)
FAUNAデータベースのセットアップ: 3つのFAUNAデータベース( Product
、 Inventory
、 Review
)を作成し、管理キーを生成します。各データベースのGraphQLスキーマを定義します(元の例に示すように)。
Gateway Service Enhancement(gateway.js): @graphql-tools/stitch
を使用してスキーマステッチを実装します。このセクションには、 makeRemoteExecutor
とmakeGatewaySchema
機能がありますが、元のもので説明されていますが、明確さが向上し、読みやすくするために潜在的にリファクタリングされます。重要な改善は次のとおりです。
ステッチサードパーティAPI:ゲートウェイを拡張して、同じmakeRemoteExecutor
とstitchSchemas
アプローチを使用して、サードパーティGraphQL API(SpaceX APIなど)を含めます。
AWS Lambdaへの展開:サーバーレスフレームワークを使用して、GatewayをAWS Lambda関数に展開します。必要な依存関係( serverless
、 serverless-http
、 body-parser
)をインストールします。 serverless.yaml
ファイルを作成します(元のファイルに示すように)。 gateway.js
変更して、適切なLambda機能処理のためにserverless-http
と統合します。 serverless deploy
。
結論
Schema Stitchingは、複数のデータソースからスケーラブルで保守可能なGraphQL APIを構築するための強力なソリューションを提供します。この記事ではFaunaとAWS Lambdaを使用していますが、原則は他のGraphQLサービスやサーバーレスプラットフォームに広く適用されます。 Apollo Federationのような代替アプローチは、同様の機能を提供します。
以上が複数のデータソースに単一のGraphQLを実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。