この記事は、グラフQLに関する10のよくある質問に答え、エラー処理、ページネーション、認証、リアルタイムの更新、ファイルアップロード、キャッシュ、バッチロード、n 1クエリの問題、スキーマステッチ/フェデレーション、バージョンなどのトピックについて説明します。 🎜>
キーテイクアウト:
- GraphQLエラー管理には、応答でフィールドを返すことが含まれます。 カスタムエラーは、リソースバー(サーバー側)にスローでき、
- フィールドの存在のためのクライアント側のハンドリングチェック。
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 サイトの他の関連記事を参照してください。

これらのトップ開発者ニュースレターを使用して、最新のハイテクトレンドについてお知らせください! このキュレーションされたリストは、AI愛好家からベテランのバックエンドやフロントエンド開発者まで、すべての人に何かを提供します。 お気に入りを選択し、Relを検索する時間を節約してください

このチュートリアルは、AWSサービスを使用してサーバーレスイメージ処理パイプラインを構築することをガイドします。 APIゲートウェイ、Lambda関数、S3バケット、およびDynamoDBと対話するECS Fargateクラスターに展開されたnext.jsフロントエンドを作成します。 th

このパイロットプログラム、CNCF(クラウドネイティブコンピューティングファンデーション)、アンペアコンピューティング、Equinix Metal、およびActuatedのコラボレーションであるCNCF GithubプロジェクトのARM64 CI/CDが合理化されます。 このイニシアチブは、セキュリティの懸念とパフォーマンスリムに対処します


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール
