

# API Gateway でメソッドレスポンスをセットアップする
<a name="api-gateway-method-settings-method-response"></a>

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

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

プロキシ統合により、API Gateway はバックエンドレスポンスを自動的にメソッドレスポンスにパスします。API メソッドレスポンスをセットアップする必要はありません。ただし、Lambda プロキシ統合の場合、Lambda 関数は API Gateway 用に[この出力形式](set-up-lambda-proxy-integrations.md#api-gateway-simple-proxy-for-lambda-output-format)で結果を返し、統合レスポンスをメソッドレスポンスにマッピングする必要があります。

プログラム上、メソッドレスポンスのセットアップは、API Gateway の [MethodResponse](https://docs.aws.amazon.com/apigateway/latest/api/API_MethodResponse.html) リソースの作成および [statusCode](https://docs.aws.amazon.com/apigateway/latest/api/API_MethodResponse.html#statusCode)、[responseParameters](https://docs.aws.amazon.com/apigateway/latest/api/API_MethodResponse.html#responseParameters)、[responseModels](https://docs.aws.amazon.com/apigateway/latest/api/API_MethodResponse.html#responseModels) のプロパティの設定を意味します。

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

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

## メソッドレスポンスステータスコードをセットアップする
<a name="setup-method-response-status-code"></a>

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

メソッドレスポンスステータスコードをセットアップするには、[https://docs.aws.amazon.com/apigateway/latest/api/API_MethodResponse.html#statusCode](https://docs.aws.amazon.com/apigateway/latest/api/API_MethodResponse.html#statusCode) プロパティを HTTP ステータスコードに設定します。次の [put-method-response](https://docs.aws.amazon.com/cli/latest/reference/apigateway/put-method-response.html) コマンドは、`200` メソッドレスポンスを作成します。

```
aws apigateway put-method-response \
    --rest-api-id vaz7da96z6 \ 
    --resource-id 6sxz2j \
    --http-method GET \
    --status-code 200
```

## メソッドレスポンスパラメータをセットアップする
<a name="setup-method-response-parameters"></a>

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

メソッドレスポンスパラメータをセットアップするには、`responseParameters` 形式の `MethodResponse` キー値のペアの [https://docs.aws.amazon.com/apigateway/latest/api/API_MethodResponse.html#responseParameters](https://docs.aws.amazon.com/apigateway/latest/api/API_MethodResponse.html#responseParameters) マップに追加します。次の [put-method-response](https://docs.aws.amazon.com/cli/latest/reference/apigateway/put-method-response.html) コマンドは、`my-header` ヘッダーを設定します。

```
aws apigateway put-method-response \
        --rest-api-id vaz7da96z6 \
        --resource-id 6sxz2j \
        --http-method GET \
        --status-code 200  \
        --response-parameters method.response.header.my-header=false
```

## メソッドレスポンスモデルをセットアップする
<a name="setup-method-response-models"></a>

 

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

レスポンスモデルを設定する前に、API Gateway でモデルを作成する必要があります。そのために、`[create-model](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-model.html)` コマンドを呼び出すことができます。次の [create-model](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-model.html) コマンドは、`GET /pets/{petId}` メソッドリクエストへのレスポンスの本文を記述する `PetStorePet` モデルを作成します。

```
aws apigateway create-model \
    --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 [https://docs.aws.amazon.com/apigateway/latest/api/API_Model.html](https://docs.aws.amazon.com/apigateway/latest/api/API_Model.html) リソースとして作成されます。

メソッドレスポンスモデルをセットアップしてペイロード形式を定義するには、"application/json":"PetStorePet" キー値のペアを [https://docs.aws.amazon.com/apigateway/latest/api/API_MethodResponse.html](https://docs.aws.amazon.com/apigateway/latest/api/API_MethodResponse.html) リソースの [https://docs.aws.amazon.com/apigateway/latest/api/API_MethodResponse.html#responseModels](https://docs.aws.amazon.com/apigateway/latest/api/API_MethodResponse.html#responseModels) マップに追加します。次の [put-method-response](https://docs.aws.amazon.com/cli/latest/reference/apigateway/put-method-response.html) コマンドは、レスポンスモデルを使用してペイロード形式を定義するメソッドレスポンスを作成します。

```
aws apigateway put-method-response \
    --rest-api-id vaz7da96z6 \
    --resource-id 6sxz2j \
    --http-method GET \
    --status-code 200  \
    --response-parameters method.response.header.my-header=false \
    --response-models '{"application/json":"PetStorePet"}'
```