ホームページ >テクノロジー周辺機器 >IT業界 >あなたの10の最も一般的なGraphQLの質問に答えました
この記事は、グラフQLに関する10のよくある質問に答え、エラー処理、ページネーション、認証、リアルタイムの更新、ファイルアップロード、キャッシュ、バッチロード、n 1クエリの問題、スキーマステッチ/フェデレーション、バージョンなどのトピックについて説明します。 🎜>
キーテイクアウト:
errors
GraphQLページネーションは、「エッジ」と「ノード」を備えた「接続」パターンを利用し、errors
、first
などの引数を使用します。
last
リアルタイムの更新はサブスクリプションを通じて達成され、更新トリガーを定義するためにスキーマとリゾルバーのbefore
フィールドのafter
タイプが必要です。
Subscription
1。 GraphQLエラー処理:subscribe
配列を返すことによりエラーを処理します。各エラーオブジェクトには、aおよび潜在的にその他の詳細が含まれます。サーバー側のエラー処理には、リゾルバーにカスタムエラーをスローすることが含まれます(javascriptでなど)。クライアント側のエラー処理には、
フィールドをチェックすることが含まれます。
errors
message
2。 GraphQLページネーション:throw new Error('Something went wrong');
errors
「エッジ」と「ノード」を使用した「接続」パターンは、ページネーションを促進します。
、、のような引数ページネーション。 サンプルスキーマが提供されているサンプルスキーマが提供されています。
3。認証と承認:first
last
before
GraphQLは、認証/承認を本質的にサポートしていません。これらは、ミドルウェアまたはコンテキストを介して実装されます。 トークンベースのアプローチ(JWTなど)が一般的です。 ミドルウェアはトークンを検証し、認証されたユーザーをコンテキストに追加します。リソースバーは、認証と承認チェックのためにこのコンテキストにアクセスします。 JavaScriptの例は、ミドルウェアとコンテキストの使用法を示しています
after
サブスクリプションは、リアルタイムの更新を有効にします。
タイプはスキーマで定義されており、リゾルバーのフィールドは更新トリガーイベントを指定します。 例では、pub/sub functionalityに
を使用しています。5。ファイルのアップロード:
Subscription
subscribe
パッケージはファイルのアップロードを処理します。 インストールされています(graphql-subscriptions
)、
メソッドはリゾルバーにアップロードされたファイルを処理します。 6。キャッシング:
キャッシュは、クライアント側(Apolloクライアントまたはリレーを使用)およびサーバー側(Dataloaderを使用)を実装します。 Dataloaderバッチとキャッシュデータフェッチ操作、データベースクエリまたはAPI呼び出しの削減。 インストール(npm install dataloader
)と使用例が提供されています。
7。バッチローディング:
Dataloaderはバッチロードを効率的に処理し、同じデータ型の複数のリクエストを単一の操作にグループ化します。 これにより、データベースのヒットまたはAPI呼び出しを最小限に抑えることでパフォーマンスが向上します。
8。 n 1クエリの問題への対処:
データローダーは、n 1クエリの問題に効果的に対処します(関連データを取得すると、過度のクエリにつながります)。 データフェッチをバッチすることにより、クエリの数を減らし、パフォーマンスを向上させます。 9。スキーマステッチ/フェデレーション:スキーマステッチ(
を使用)およびスキーマフェデレーション(Apollo Federationを使用)を組み合わせて複数のGraphQLスキーマを組み合わせます。 アポロフェデレーションは、フェデレートスキーマの作成と組み合わせにおよびgraphql-tools
を使用しますが、graphql-tools
'smergeSchemas
関数はスキーマをステッチします。 両方にインストールと使用手順が含まれています
buildFederatedSchema
ApolloGateway
10。バージョン化:
GraphQLには組み込みバージョンがありません。 スキーマの進化はアプローチであり、後方互換性を維持しながら新しいフィールド/タイプ/引数を追加します。 ディレクティブフラグは時代遅れの要素、優雅な非推奨を支援します。
@deprecated
以上があなたの10の最も一般的なGraphQLの質問に答えましたの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。