アプリコードをAPIに接続する
このガイドでは、Amplify ライブラリを使用してアプリケーションコードをバックエンド API に接続します。開始する前に、以下が必要です:
- クラウドサンドボックスと Amplify Data リソースが実行中(
npx ampx sandbox) - Amplify ライブラリがインストールされたフロントエンドアプリケーション
- npm がインストール済み
Amplify ライブラリを設定する
バックエンド(npx ampx sandbox)を繰り返し実行すると、amplify_outputs.json ファイルが生成されます。このファイルには API のエンドポイント情報と認証設定が含まれています。以下のコードをアプリのエントリーポイントに追加して、Amplify クライアントライブラリを初期化および設定します:
認可モードを設定する
認可モードは、リクエストをバックエンドでどのように認可するかを決定します。デフォルトでは、Amplify Data は「userPool」認可を使用して、署名されたユーザー認証情報で API リクエストに署名します。データモデルに allow.publicApiKey() 認可ルールを使用している場合は、認可モードとして「apiKey」を使用する必要があります。認可ルールをカスタマイズを確認して、どのタイプのリクエストでどの認可モードを選択するかについて詳しく学んでください。デフォルト認可モードは、デプロイメント成功時に生成される amplify_outputs.json の一部として提供されます。
リクエストレベルで認可モードを設定する
各個別 API リクエストで認可モードを指定することもできます。これは、アプリケーションが通常は 1 つの認可モードを使用し、少数の例外がある場合に便利です。
let result = try await Amplify.API.query( request: .list( Todo.self, authMode: .apiKey))let result = try await Amplify.API.query( request: .list( Todo.self, authMode: .amazonCognitoUserPools))let result = try await Amplify.API.query( request: .list( Todo.self, authMode: .awsIAM))let result = try await Amplify.API.query( request: .list( Todo.self, authMode: .openIDConnect))カスタムリクエストヘッダーを設定する
Amplify Data エンドポイントを使用する場合、認可目的またはフロントエンドからバックエンド API へのメタデータを渡すためにリクエストヘッダーを設定する必要があるかもしれません。
カスタムヘッダーを送信リクエストに含めるには、AWSAPIPlugin に URLRequestInterceptor を追加します。
import Amplifyimport AWSAPIPlugin
struct CustomInterceptor: URLRequestInterceptor { func intercept(_ request: URLRequest) throws -> URLRequest { var request = request request.setValue("headerValue", forHTTPHeaderField: "headerKey") return request }}let apiPlugin = AWSAPIPlugin(modelRegistration: AmplifyModels())try apiPlugin.add(interceptor: CustomInterceptor(), for: AWSAPIPlugin.defaultGraphQLAPI)try Amplify.add(plugin: apiPlugin)try Amplify.configure(with: .amplifyOutputs)