ステップ 3: リゾルバーの設定 - AWS AppSync

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ステップ 3: リゾルバーの設定

前のセクションでは、GraphQL スキーマとデータソースを作成し、 AWS AppSync サービス内でリンクする方法を学習しました。スキーマでは、クエリとミューテーションに 1 つ以上のフィールド (オペレーション) を設定している場合があります。スキーマには、操作がデータソースに要求するデータの種類が記述されていましたが、それらの操作がデータに対してどのように動作するかは実装されていませんでした。

操作の動作は常にリゾルバーに実装され、リゾルバーは操作を実行するフィールドにリンクされます。リゾルバーの詳細な仕組みについては、リゾルバーページを参照してください。

では AWS AppSync、リゾルバーは、リゾルバーが実行される環境であるランタイムに関連付けられています。ランタイムは、リゾルバーを記述する言語を決定します。現在サポートされているランタイムは、APPSYNC_JS (JavaScript) と Apache Velocity Template Language (VTL) の 2 つです。

リゾルバーを実装する場合、リゾルバーは次のような一般的な構造になっています。

  • before Step: クライアントからリクエストが送信されると、使用中のスキーマフィールド (通常はクエリ、ミューテーション、サブスクリプション) のリゾルバーにリクエストデータが渡されます。リゾルバーは before step ハンドラーを使用してリクエストデータの処理を開始します。これにより、データがリゾルバーを通過する前に一部の前処理操作を実行できます。

  • 関数: before ステップが実行されると、リクエストは関数リストに渡されます。リストの最初の関数がデータソースに対して実行されます。関数は、独自のリクエストハンドラーとレスポンスハンドラーを含むリゾルバーのコードのサブセットです。リクエストハンドラーはリクエストデータを取得し、データソースに対して操作を実行します。レスポンスハンドラーは、データソースのレスポンスを処理してからリストに戻します。関数が複数ある場合、リクエストデータはリスト内の次に実行される関数に送信されます。リスト内の関数は、開発者が定義した順序で連続して実行されます。すべての関数が実行されると、最終結果は後のステップに渡されます。

  • after step: after step は、GraphQL レスポンスに渡す前に、最終関数のレスポンスに対していくつかの最終オペレーションを実行できるハンドラー関数です。

このフローはパイプラインリゾルバーの例です。パイプラインリゾルバーはどちらのランタイムでもサポートされています。ただし、これはパイプラインリゾルバーで何ができるかを簡単に説明したものです。また、ここでは考えられるリゾルバー構成を 1 つだけ説明しています。サポートされているリゾルバー設定の詳細については、JavaScript 「APPSYNC_JS のリゾルバーの概要」または「VTL のリゾルバーマッピングテンプレートの概要」を参照してください。

ご覧のとおり、リゾルバーはモジュール式です。リゾルバーのコンポーネントが正しく動作するためには、他のコンポーネントからの実行状態を覗き見できる必要があります。リゾルバーセクションを見れば、リゾルバーの各コンポーネントには、実行状態に関する重要な情報を一連の引数 (argscontextなど) として渡すことができることがわかります。では AWS AppSync、これは によって厳密に処理されますcontext。これは解決対象のフィールドに関する情報を格納するコンテナです。これには、渡される引数、結果、承認データ、ヘッダーデータなど、あらゆるものが含まれます。コンテキストの詳細については、APPSYNC_JS の「リゾルバーコンテキストオブジェクトリファレンス」または VTL の「リゾルバーマッピングテンプレートコンテキストリファレンス」を参照してください。

このコンテキストは、リゾルバーの実装に使用できる唯一のツールではありません。 は、値の生成、エラー処理、解析、変換など、幅広いユーティリティ AWS AppSync をサポートしています。APPSYNC_JS の場合はこちら、VTL の場合はこちらでユーティリティのリストを確認できます。

以下のセクションでは、GraphQL API でリゾルバーを設定する方法を学習します。