アプリコードをAPIに接続する
このガイドでは、Amplify ライブラリを使用してアプリケーションコードをバックエンド API に接続します。Amplify ライブラリのインストールと構成方法を確認します。
始める前に、以下が必要です:
- Amplify CLI を通じて、または直接基盤となる AWS AppSync サービス を通じてすでに設定されている GraphQL API。
- セットアップされたフロントエンドアプリケーション。アプリのセットアップの手順については、プロジェクトセットアップ: アプリケーションの作成 を参照してください。
- npm がインストール されていること
Amplify ライブラリのインストール
Amplify ライブラリは、GraphQL API に接続するために推奨されるクライアントライブラリです。Amplify クライアントライブラリをインストールするには、フロントエンドのルートフォルダに移動し、ターミナルで次のコマンドを実行します:
npm install aws-amplifyAmplify ライブラリの構成
次に、Amplify CLI がプロビジョニングした API または既存の AppSync GraphQL API に接続するようにライブラリを構成します:
バックエンド (amplify push) をデプロイすると、amplifyconfiguration.json ファイルが生成されます。このファイルには、API のエンドポイント情報と認証構成が含まれています。
import { Amplify } from 'aws-amplify';import config from './amplifyconfiguration.json';
Amplify.configure(config);アプリコードを GraphQL API に接続するには、2 つの構成を提供する必要があります:
- API エンドポイント URL
- デフォルト認可モード
GraphQL API エンドポイント URL の構成
Amplify ライブラリは、Amplify.configure() に提供される情報に基づいて GraphQL API エンドポイントに接続します。
既存の GraphQL API を操作する場合、API エンドポイントと認証構成を手動で提供する必要があります。まず、GraphQL API エンドポイント URL を構成するには、endpoint と region の値を設定します。
import { Amplify } from 'aws-amplify';
Amplify.configure({ API: { GraphQL: { // ここにエンドポイントとリージョン情報を提供します endpoint: 'https://abcxyz.appsync-api.us-east-1.amazonaws.com/graphql', region: 'us-east-1' // API の正しい認可モードを設定する方法については、次のセクションを参照してください } }});次に、API で認証するための適切な認可モードを構成します。
デフォルト認可モードの構成
デフォルト認可モード は、リクエスト時に他の認可モードが指定されていない場合に GraphQL API が認可されるべき認可モードです。
Amplify CLI を使用して API をプロビジョニングした場合、デフォルト認可モード は amplifyconfiguration.json の一部として提供されます。他のツールを使用して API をプロビジョニングした場合、デフォルト認可モード を手動で設定する必要があります。以下のタブからデフォルト認可モードを選択して続行してください:
import { Amplify } from 'aws-amplify';
Amplify.configure({ API: { GraphQL: { endpoint: 'https://abcxyz.appsync-api.us-east-1.amazonaws.com/graphql', region: 'us-east-1', // デフォルト認可モードを「apiKey」に設定し、API キーの値を提供します defaultAuthMode: 'apiKey', apiKey: 'da2-xxxxxxxxxxxxxxxxxxxxxxxxxx' } }});import { Amplify } from 'aws-amplify';
Amplify.configure({ API: { GraphQL: { endpoint: 'https://abcxyz.appsync-api.us-east-1.amazonaws.com/graphql', region: 'us-east-1', // デフォルト認可モードを「userPool」に設定します defaultAuthMode: 'userPool' } }});import { Amplify } from 'aws-amplify';
Amplify.configure({ API: { GraphQL: { endpoint: 'https://abcxyz.appsync-api.us-east-1.amazonaws.com/graphql', region: 'us-east-1', // デフォルト認可モードを「iam」に設定します defaultAuthMode: 'iam' } }, Auth: { Cognito: { identityPoolId: "YOUR_IDENTITY_POOL_ID", allowGuestAccess: true // 認証されていないロールを使用しない場合は false に設定します } }});import { Amplify } from 'aws-amplify';
Amplify.configure({ API: { GraphQL: { endpoint: 'https://abcxyz.appsync-api.us-east-1.amazonaws.com/graphql', region: 'us-east-1', // デフォルト認可モードを「oidc」に設定します defaultAuthMode: 'oidc' } }});GraphQL API にカスタムリクエストヘッダーを設定
GraphQL エンドポイントを操作するときは、認可目的でまたはクライアントから API に追加のメタデータを渡すために、リクエストヘッダーを設定する必要がある場合があります。これは、graphql_headers 関数を構成に渡すことで実行されます:
import { Amplify } from 'aws-amplify';import config from './amplifyconfiguration.json';
Amplify.configure(config, { API: { GraphQL: { headers: async () => ({ 'My-Custom-Header': 'my value' }) } }});GraphQL クライアントコードとタイピングの生成
バックエンド GraphQL スキーマから GraphQL クエリ、ミューテーション、サブスクリプションを直接生成できます。これにより、API を迅速に開発するときにゼロから GraphQL ドキュメントを手書きすることを回避でき、エンドツーエンドのタイピングも提供します。
デフォルトでは、amplify push で API をデプロイするとき、GraphQL クエリ、ミューテーション、およびサブスクリプション用にクライアントコードを生成するかどうかを尋ねられます。生成された GraphQL ドキュメントは src/graphql/**/ に保存されます。
amplify push? Do you want to generate code for your newly created GraphQL API> Yes? Choose the code generation language target> javascript? Enter the file name pattern of graphql queries, mutations and subscriptions> src/graphql/**/*.js? Do you want to generate/update all possible GraphQL operations - queries, mutations and subscriptions> Yes? Enter maximum statement depth [increase from default if your schema is deeply nested]> 2上記のコードジェン設定をカスタマイズするには、ターミナルで次のコマンドを実行します:
amplify update codegenフロントエンドアプリのルートディレクトリに移動し、ターミナルで次のコマンドを実行します:
npx @aws-amplify/cli codegen add --apiId <...> --region <...>これにより API のスキーマがダウンロードされ、デフォルトではクライアントヘルパーコードが src/graphql フォルダに生成されます。API のデプロイ後、次のコマンドを再実行して、更新された GraphQL ステートメントとタイプを生成できます:
npx @aws-amplify/cli codegen生成された GraphQL クエリ、ミューテーション、サブスクリプションの使用
生成された GraphQL コードをコードベースにインポートして、client.graphql() 操作に渡した後、使用できます。GraphQL では、通常、JavaScript クライアントから API と対話するために、次の種類の操作があります:
- ミューテーション - API にデータを書き込む (作成、更新、削除操作)
import { generateClient } from 'aws-amplify/api';import { createTodo, updateTodo, deleteTodo } from './graphql/mutations';
const client = generateClient();
const todo = { name: 'My first todo', description: 'Hello world!' };
/* create a todo */await client.graphql({ query: createTodo, variables: { input: todo }});
/* update a todo */await client.graphql({ query: updateTodo, variables: { input: { id: 'ENTER_TODO_ID_HERE', name: 'Updated todo info' } }});
/* delete a todo */await client.graphql({ query: deleteTodo, variables: { input: { id: 'ENTER_TODO_ID_HERE' } }});- クエリ - API からデータを読み取る (リストおよび取得操作)
import { generateClient } from 'aws-amplify/api';import { listTodos } from './graphql/queries';
const client = generateClient();
const todos = await client.graphql({ query: listTodos });クエリ、ミューテーション、サブスクリプションについてより詳しく学ぶには、アプリケーションデータの作成、更新、削除 と アプリケーションデータの読み取り ガイドを参照してください。
まとめ
おめでとうございます! アプリコードを API に接続 ガイドを完了しました。このガイドでは、必要な構成を確認し、Amplify ライブラリをインストールおよび構成しました。また、このデータを書き込み、読み取るための簡単な方法をいくつか確認しました。
次のステップ
推奨される次のステップには、API を使用してデータを変更およびクエリすることが含まれます。また、リアルタイムイベントをサブスクリプションして、データ内のミューテーションを検索する方法を確認することもできます。この作業に役立つ一部のリソースは以下のとおりです: