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

API Gateway で基本的なリクエストの検証をテストする

サンプル API で基本的なリクエストの検証をテストする手順については、以下のいずれかのトピックを選択してください。

API Gateway REST API を使用して基本的なリクエストの検証をテストする

デプロイされた API の呼び出し URL を参照するには、ステージから API をエクスポートできます。必ず、Accept: application/json または Accept: application/yaml ヘッダーを含めてください。

Copy
GET /restapis/fjd6crafxc/stages/testStage/exports/swagger?extensions=validators HTTP/1.1 Accept: application/json Content-Type: application/json Host: apigateway.us-east-1.amazonaws.com X-Amz-Date: 20170306T234936Z Authorization: AWS4-HMAC-SHA256 Credential={access_key_ID}/20170306/us-east-1/apigateway/aws4_request, SignedHeaders=content-length;content-type;host;x-amz-date, Signature={sig4_hash}

リクエストの検証に関連する Swagger 仕様をダウンロードしない場合、?extensions=validators クエリパラメーターを無視できます。

API Gateway REST API 呼び出しを使用してリクエストの検証をテストするには

  1. GET /validation?q1=cat を呼び出します。

    Copy
    GET /testStage/validation?q1=cat HTTP/1.1 Host: fjd6crafxc.execute-api.us-east-1.amazonaws.com Content-Type: application/json Accept: application/json

    q1 の必須パラメーターが設定されていて、空白ではないため、リクエストは検証に合格します。API Gateway は、以下の 200 OK レスポンスを返します。

    Copy
    [ { "id": 1, "type": "cat", "price": 249.99 }, { "id": 2, "type": "cat", "price": 124.99 }, { "id": 3, "type": "cat", "price": 0.99 } ]
  2. GET /validation を呼び出します。

    Copy
    GET /testStage/validation HTTP/1.1 Host: fjd6crafxc.beta.execute-api.us-east-1.amazonaws.com Content-Type: application/json Accept: application/json

    q1 の必須パラメーターが設定されていないため、リクエストは検証に合格しません。API Gateway は、以下の 400 Bad Request レスポンスを返します。

    Copy
    { "message": "Missing required request parameters: [q1]" }
  3. GET /validation?q1= を呼び出します。

    Copy
    GET /testStage/validation?q1= HTTP/1.1 Host: fjd6crafxc.beta.execute-api.us-east-1.amazonaws.com Content-Type: application/json Accept: application/json

    q1 の必須パラメーターが空白であるため、リクエストは検証に合格しません。API Gateway は、前の例と同じ 400 Bad Request レスポンスを返します。

  4. POST /validation を呼び出します。

    Copy
    POST /testStage/validation HTTP/1.1 Host: fjd6crafxc.beta.execute-api.us-east-1.amazonaws.com Content-Type: application/json Accept: application/json h1: v1 { "name" : "Marco", "type" : "dog", "price" : 260 }

    h1 の必須ヘッダーパラメーターが設定されており、空白ではなく、ペイロード形式が RequestDataModel の必須プロパティと関連する制約に従っているため、リクエストは検証に合格します。API Gateway は、以下の成功レスポンスを返します。

    Copy
    { "pet": { "name": "Marco", "type": "dog", "price": 260 }, "message": "success" }
  5. h1 ヘッダーを指定しないか、その値を空白にせずに POST /validation を呼び出します。

    Copy
    POST /testStage/validation HTTP/1.1 Host: fjd6crafxc.execute-api.us-east-1.amazonaws.com Content-Type: application/json Accept: application/json { "name" : "Marco", "type" : "dog", "price" : 260 }

    h1 の必須ヘッダーパラメーターがないか、空白に設定されているため、リクエストは検証に合格しません。API Gateway は、以下の 400 Bad Request レスポンスを返します。

    Copy
    { "message": "Missing required request parameters: [h1]" }
  6. ペイロードの type プロパティを bird に設定して、POST /validation を呼び出します。

    Copy
    POST /testStage/validation HTTP/1.1 Host: fjd6crafxc.execute-api.us-east-1.amazonaws.com Content-Type: application/json Accept: application/json X-Amz-Date: 20170309T000215Z h1: v1 { "name" : "Molly", "type" : "bird", "price" : 269 }

    type プロパティ値が ["dog", "cat", "fish"] の列挙のメンバーではないため、リクエストは検証に合格しません。API Gateway は、以下の 400 Bad Request レスポンスを返します。

    Copy
    { "message": "Invalid request body" }

    price501 に設定することは、プロパティの制約に違反します。このため、検証に失敗し、同じ 400 Bad Request レスポンスが返されます。

API Gateway コンソールを使用して基本的なリクエストの検証をテストする

以下のステップでは、API Gateway コンソールで基本的なリクエストの検証をテストする方法について説明します。

API Gateway コンソールで TestInvoke を使用してメソッドでリクエストの検証をテストするには

API Gateway コンソールにサインインした状態で、以下の操作を実行します。

  1. リクエストの検証マップを校正した API の [Resources] を選択します。

  2. 指定されたリクエストの検証を使用してリクエストの検証を有効にしたメソッドを選択します。

  3. [Method Execution] の [Client] ボックスで [Test] を選択します。

  4. 必須リクエストパラメーターまたは該当する本文で別の値を試し、[Test] を選択してレスポンスを確認します。

メソッド呼び出しが検証に合格すると、予想されるレスポンスを取得します。検証に失敗すると、ペイロードが正しい形式でない場合は以下のエラーメッセージが返されます。

Copy
{ "message": "Invalid request body" }

リクエストパラメーターが無効な場合、以下のエラーメッセージが返されます。

Copy
{ "message": "Missing required request parameters: [p1]" }