API Gateway で基本的なリクエストの検証をテストする
サンプル API で基本的なリクエストの検証をテストする手順については、以下のいずれかのトピックを選択してください。
API Gateway REST API を使用して基本的なリクエストの検証をテストする
デプロイされた API の呼び出し URL を参照するには、ステージから API をエクスポートできます。必ず、Accept: application/json
または Accept: application/yaml
ヘッダーを含めてください。
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}
リクエストの検証に関連する OpenAPI 仕様をダウンロードしない場合、?extensions=validators
クエリパラメータを無視できます。
API Gateway REST API コールを使用してリクエストの検証をテストするには
-
GET /validation?q1=cat
を呼び出します。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
レスポンスを返します。[ { "id": 1, "type": "cat", "price": 249.99 }, { "id": 2, "type": "cat", "price": 124.99 }, { "id": 3, "type": "cat", "price": 0.99 } ]
-
GET /validation
を呼び出します。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
レスポンスを返します。{ "message": "Missing required request parameters: [q1]" }
-
GET /validation?q1=
を呼び出します。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
レスポンスを返します。 -
POST /validation
を呼び出します。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 は、以下の成功レスポンスを返します。{ "pet": { "name": "Marco", "type": "dog", "price": 260 }, "message": "success" }
-
POST /validation
ヘッダーを指定しないか、その値を空白にせずにh1
を呼び出します。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
レスポンスを返します。{ "message": "Missing required request parameters: [h1]" }
-
ペイロードの
POST /validation
プロパティをtype
に設定して、bird
を呼び出します。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
レスポンスを返します。{ "message": "Invalid request body" }
price
を501
に設定することは、プロパティの制約に違反します。このため、検証に失敗し、同じ400 Bad Request
レスポンスが返されます。
API Gateway コンソールを使用して基本的なリクエストの検証をテストする
以下のステップでは、API Gateway コンソールで基本的なリクエストの検証をテストする方法について説明します。
API Gateway コンソールで TestInvoke を使用してメソッドでリクエストの検証をテストするには
API Gateway コンソールにサインインしているときに、次の操作を行います。
-
リクエストの検証マップを設定した API の [Resources (リソース)] を選択します。
-
指定されたリクエストの検証を使用してリクエストの検証を有効にしたメソッドを選択します。
-
[メソッドの実行] の [クライアント] ボックスで [テスト] を選択します。
-
必須リクエストパラメータまたは該当する本文で別の値を試し、[テスト] を選択してレスポンスを確認します。
メソッド呼び出しが検証に合格すると、予想されるレスポンスを取得します。検証に失敗すると、ペイロードが正しい形式でない場合は以下のエラーメッセージが返されます。
{ "message": "Invalid request body" }
リクエストパラメータが無効な場合、以下のエラーメッセージが返されます。
{ "message": "Missing required request parameters: [
p1
]" }