Amazon API Gateway
開発者ガイド

API Gateway のメソッドレスポンスをセットアップする

API メソッドレスポンスは、クライアントが受信する API メソッドリクエストの出力をカプセル化します。出力データには、HTTP ステータスコード、一部のヘッダー、さらに場合によっては本文が含まれます。

非プロキシ統合を使用すると、指定されたレスポンスパラメーターと本文は、関連する統合レスポンスデータからマッピングできます。また、マッピングに従って特定の静的な値を割り当てることができます。これらのマッピングは統合レスポンスで指定されています。マッピングは、そのままで統合レスポンスを通過する同一の変換になることがあります。

プロキシ統合により、API Gateway はバックエンドレスポンスを自動的にメソッドレスポンスにパスします。API メソッドレスポンスをセットアップする必要はありません。ただし、Lambda プロキシ統合の場合、Lambda 関数は API Gateway 用にこの出力形式で結果を返し、統合レスポンスをメソッドレスポンスにマッピングする必要があります。

プログラム上、メソッドレスポンスのセットアップは、API Gateway の MethodResponse リソースの作成および statusCoderesponseParametersresponseModels のプロパティの設定を意味します。

API メソッドにステータスコードを設定する場合、予期せぬステータスコードのあらゆる統合レスポンスを処理するためのデフォルト設定を 1 つ選択する必要があります。これはキャスティングやマッピングされないサーバー側エラーのレスポンスになるため、デフォルトとして 500 を設定することが合理的です。ここでは説明のために、API Gateway コンソールはデフォルトとして 200 レスポンスを設定しています。しかし、これは 500 レスポンスにリセットできます。

メソッドレスポンスを設定するには、先にメソッドリクエストを作成している必要があります。

メソッドレスポンスステータスコードをセットアップする

メソッドレスポンスのステータスコードは、レスポンスのタイプを定義します。たとえば、200、400、500 のレスポンスは、それぞれ正常なクライアント側エラーレスポンスを示します。

メソッドレスポンスステータスコードをセットアップするには、statusCode プロパティを HTTP ステータスコードに設定します。次の AWS CLI コマンドは、200 のメソッドレスポンスを作成します。

aws apigateway put-method-response \ --region us-west-2 \ --rest-api-id vaz7da96z6 \ --resource-id 6sxz2j \ --http-method GET \ --status-code 200

メソッドレスポンスパラメーターをセットアップする

メソッドレスポンスパラメーターは、関連するメソッドリクエストへのレスポンスとしてクライアントが受信するヘッダーを定義します。レスポンスパラメーターは、API Gateway が API メソッドの統合レスポンスに示されたマッピングに応じて統合レスポンスパラメーターをマッピングするターゲットも指定します。

メソッドレスポンスパラメーターをセットアップするには、"{parameter-name}":"{boolean}" 形式の MethodResponse キー値のペアの responseParameters マップに追加します。次の CLI コマンドは、マッピングターゲットとして my-header ヘッダー、petId パス変数、query クエリパラメーターを設定する例を示します。

aws apigateway put-method-response \ --region us-west-2 \ --rest-api-id vaz7da96z6 \ --resource-id 6sxz2j \ --http-method GET \ --status-code 200 \ --response-parameters method.request.header.my-header=false,method.request.path.petId=true,method.request.querystring.query=false

メソッドレスポンスモデルをセットアップする

メソッドレスポンスモデルは、メソッドレスポンス本文の形式を定義します。レスポンスモデルを設定する前に、API Gateway でモデルを作成する必要があります。そのために、create-model コマンドを呼び出すことができます。次の例に、GET /pets/{petId} メソッドリクエストへのレスポンスの本文を説明する PetStorePet モデルの作成方法を示します。

aws apigateway create-model \ --region us-west-2 \ --rest-api-id vaz7da96z6 \ --content-type application/json \ --name PetStorePet \ --schema '{ \ "$schema": "http://json-schema.org/draft-04/schema#", \ "title": "PetStorePet", \ "type": "object", \ "properties": { \ "id": { "type": "number" }, \ "type": { "type": "string" }, \ "price": { "type": "number" } \ } \ }'

結果は API Gateway Model リソースとして作成されます。

メソッドレスポンスモデルをセットアップしてペイロード形式を定義するには、"application/json":"PetStorePet" キー値のペアを MethodResponse リソースの requestModels マップに追加します。次の put-method-response の AWS CLI コマンドにその方法を示します。

aws apigateway put-method-response \ --region us-west-2 \ --rest-api-id vaz7da96z6 \ --resource-id 6sxz2j \ --http-method GET \ --status-code 200 \ --request-parameters method.request.header.my-header=false,method.request.path.petId=true,method.request.querystring.query=false --request-models '{"application/json":"PetStorePet"}'

メソッドレスポンスモデルのセットアップは、API のために厳密に型指定された SDK を作成する際に必要です。これにより、出力が Java や Objective-C の適切なクラスに確実にキャストされるようになります。それ以外の場合は、モデルの設定はオプションです。