メニュー
Amazon API Gateway
開発者ガイド

API Gateway でメソッドのモック統合を設定する

Amazon API Gateway は、API メソッドの Mock 統合をサポートしています。この機能により、API 開発者はバックエンドを統合することなく、API Gateway から直接 API レスポンスを生成できます。API 開発者がこの機能を使用すると、プロジェクト開発の完了前に、API を操作する必要がある他の依存チームのブロックを解除できます。また、この機能を活用して、API の概要や API へのナビゲーションを提供できる API のランディングページをプロビジョニングすることができます。そのようなランディングページの例として、「例から API Gateway API を作成する」で説明されている API 例のルートリソースで、GET メソッドの統合リクエストとレスポンスを参照してください。

API 開発者は、API Gateway がモック統合リクエストにどのように応答するかを決定します。そのため、特定のステータスコードとレスポンスを関連付ける、メソッドの統合リクエストと統合レスポンスを設定します。タスクでは、統合リクエストでマッピングテンプレートを設定して、サポートされているステータスコードをリクエストペイロードに指定します。また、関連付けられたレスポンスペイロードを指定するために、サポートされているステータスコード用に 1 つずつ統合レスポンスにマッピングテンプレートを設定します。実行時に API Gateway はリクエストペイロードからステータスコードを取得し、対応するテンプレートを呼び出して、関連付けられたレスポンスペイロードを返します。統合リクエストペイロードのコンテンツタイプは application/json である必要があります。また、その形式は {"statusCode": ddd, ... } である必要があります (ddd は HTTP ステータスコードを表します)。統合レスポンスペイロードのコンテンツタイプは、レスポンスデータに一致する任意のコンテンツタイプ (application/jsonapplication/xmltext/htmltext/plain など) とすることができます。

このセクションでは、API Gateway コンソールを使用して API メソッドのモック統合を有効にする方法を説明します。

前提条件

メソッドでモック統合を有効にする

  1. API リソースを選択してメソッドを作成します。[Setup] ペインで、[Mock Integration]、[Save] の順に選択します。

  2. [Method Execution] ペインで、[Integration Request] を選択します。

  3. デフォルトでは、Mock 統合は 200 HTTP ステータスコードを返します。このデフォルト動作をカスタマイズするには、以下の操作を実行します。

    1. 拡張 Mapping Templates.

    2. [Content-Type] で、次のいずれかを実行します。

      • 必要なのコンテンツタイプがすでに表示されている場合は (例: application/json)、該当するタイプを選択します。

      • 必要なコンテンツタイプが表示されていない場合は、[Add mapping] テンプレートを選択し、必要なコンテンツタイプを入力して (例: application/json) [Create] を選択します。

    3. [Template] エディターで、統合レスポンスで使用する HTTP ステータスコードを決定する目的で API Gateway が使用するテンプレートのコンテンツを入力します。テンプレートは statusCode プロパティを含む JSON ペイロードを出力する必要があります。詳細については、「リクエストテンプレートの例」を参照してください。

    4. [Mapping template] の横の [Save] を選択します。

  4. メソッドに追加する各クエリ文字列パラメータやヘッダーパラメータでは、以下の操作を実行します。

    1. [Method Execution] を選択してから、[Method Request] を選択します。

    2. [URL Query String Parameters] または [HTTP Request Headers] の各矢印を選択し、[Add query string] または [Add header] をそれぞれ選択します。

    3. [Name] にクエリ文字列パラメータまたはヘッダーパラメータの名前を入力し、[Create a new query string] または [Create] をそれぞれ選択します。

      注記

      クエリ文字列パラメータまたはヘッダーパラメータを削除するには、[Cancel] または [Remove] を選択します。クエリ文字列パラメータまたはヘッダーパラメータを変更するには、削除して代わりに新しいものを作成する必要があります。

  5. [Method Execution] を選択してから、[Method Response] を選択します。

  6. 次のいずれかを行ってください。

    • 使用する [HTTP Status] エントリのすべてが表示されている場合は (例: 200)、ステップ 8 までスキップします。

    • 使用する [HTTP Status] エントリで表示されていないものがある場合は、表示されていない各 [HTTP Status] エントリについて、[Add Response] を選択して使用する HTTP ステータスコードを選択し、[Create] を選択します。

  7. [Method Execution] を選択してから、[Integration Response] を選択します。

  8. 次のいずれかを行ってください。

    • 使用する [Method response status] エントリのすべてが表示されている場合は (例: 200)、ステップ 10 までスキップします。

    • 使用する [Method response status] エントリで表示されていないものがある場合は、表示されていない [Method response status] エントリごとに [Add integration response] を選択します。[Method response status] で、前に作成した [HTTP Status] エントリを選択し、[Save] を選択します。

  9. 使用する [Method response status] エントリごとに、以下の操作を行います。

    1. 使用する [Method response status] エントリに対応する行を展開します。

    2. [HTTP status regex] に、一致する [HTTP Status] エントリを入力します (400 [HTTP Status] エントリでは「400」、500 [HTTP Status] エントリでは「500」)。または、一致する範囲の HTTP ステータスコード (たとえば、「5\d{2}」はすべての 5XX HTTP ステータスコードに一致します)。

    3. 拡張 Mapping Templates.

    4. [Content-Type] で、次のいずれかを実行します。

      • 必要なのコンテンツタイプがすでに表示されている場合は (例: application/json)、該当するタイプを選択します。

      • 必要なコンテンツタイプが表示されていない場合は、[Add mapping template] を選択し、必要なコンテンツタイプ (例: application/json) を入力して [Create] を選択します。

    5. [Template] エディターで、発信者に対するレスポンスで API Gateway が使用するテンプレートのコンテンツを入力します。詳細については、「応答テンプレートの例」を参照してください。

    6. [Mapping template] の横の [Save] を選択します。

  10. メソッドをテストするには次のいずれかの操作を実行します。

    • API Gateway コンソールからメソッドを呼び出します。コンソールを使用してメソッドをテストするの手順に従います。

    • ウェブブラウザ、ウェブデバッギングプロキシツール、または cURL コマンドラインツールから、もしくは自身の API からメソッドを呼び出します。API を呼び出すの手順に従います。

リクエストテンプレートの例

以下に、200 HTTP ステータスコードを必ず使用するリクエストテンプレートの例を示します。

Copy
{ "statusCode": 200 }

以下に、HTTP ステータスコード (リクエストが catpetType パラメータを指定する場合は 200、dog パラメータを指定する場合は 400、それ以外の場合は 500) を使用するリクエストテンプレートを示します。この例は、「リクエストパラメーターをマッピングする」の例に基づいています。

Copy
{ #if( $input.params('petType') == "cat" ) "statusCode": 200 #elseif( $input.params('petType') == "dog" ) "statusCode": 400 #else "statusCode": 500 #end }

応答テンプレートの例

以下に、常に同じ情報で応答する応答テンプレートの 2 つの例を示します。これらの例は、「リクエストパラメーターをマッピングする」の例に基づいています。

Copy
## Example 400 response. { "Message": "Error: petType not valid." }
Copy
## Example 500 response. { "Message": "Error: petType not valid or not specified." }

以下は、常に同じ情報で応答する応答テンプレートの例ですが、発信者が petType パラメータに指定する値を含んでいます。この例は、「リクエストパラメーターをマッピングする」の例に基づいています。

Copy
## Example 200 response for ?petType=cat (response will contain "type": "cat"). { "id": 1, "name": "Kitty", "type": "$input.params('petType')" }