基本的なリクエストの検証を使用したサンプル API の OpenAPI 定義 - Amazon API Gateway

基本的なリクエストの検証を使用したサンプル API の OpenAPI 定義

以下の OpenAPI 定義は、リクエストの検証が有効なサンプル API を定義します。API は、PetStore API のサブセットです。POST メソッドを開示し、ペットを pets コレクションおよび GET メソッドに追加して、指定されたタイプによりペットのクエリを実行します。

x-amazon-apigateway-request-validators マップでは、2 つのリクエストの検証が API レベルで宣言されています。params-only の検証は API で有効になり、GET メソッドにより継承されます。この検証により、必須のクエリパラメータ (q1) が受信リクエストに含まれており、空白でないことを API Gateway が確認できるようになります。all の検証は、POST メソッドで有効になります。この検証は、必須のヘッダーパラメーター (h1) が設定されており、空白でないことを検証します。また、ペイロード形式が、指定された RequestBodyModel 形式に準拠していることも検証します。一致するコンテンツタイプが見つからない場合、リクエストの検証は実行されません。モデルを使用して本文を検証する際、一致するコンテンツタイプが見つからない場合、リクエストの検証は実行されません。コンテンツタイプに関係なく同じモデルを使用するには、キーとして $default を指定します。

このモデルでは、入力 JSON オブジェクトに nametypeprice の各プロパティが含まれている必要があります。name プロパティは任意の文字列にすることができ、type は指定された列挙フィールド (["dog", "cat", "fish"]) のいずれかでなければなりません。また、price は 25 から 500 の範囲にする必要があります。id パラメータは必須ではありません。

OpenAPI 2.0
{ "swagger": "2.0", "info": { "title": "ReqValidators Sample", "version": "1.0.0" }, "schemes": [ "https" ], "basePath": "/v1", "produces": [ "application/json" ], "x-amazon-apigateway-request-validators" : { "all" : { "validateRequestBody" : true, "validateRequestParameters" : true }, "params-only" : { "validateRequestBody" : false, "validateRequestParameters" : true } }, "x-amazon-apigateway-request-validator" : "params-only", "paths": { "/validation": { "post": { "x-amazon-apigateway-request-validator" : "all", "parameters": [ { "in": "header", "name": "h1", "required": true }, { "in": "body", "name": "RequestBodyModel", "required": true, "schema": { "$ref": "#/definitions/RequestBodyModel" } } ], "responses": { "200": { "schema": { "type": "array", "items": { "$ref": "#/definitions/Error" } }, "headers" : { "test-method-response-header" : { "type" : "string" } } } }, "security" : [{ "api_key" : [] }], "x-amazon-apigateway-auth" : { "type" : "none" }, "x-amazon-apigateway-integration" : { "type" : "http", "uri" : "http://petstore-demo-endpoint.execute-api.com/petstore/pets", "httpMethod" : "POST", "requestParameters": { "integration.request.header.custom_h1": "method.request.header.h1" }, "responses" : { "2\\d{2}" : { "statusCode" : "200" }, "default" : { "statusCode" : "400", "responseParameters" : { "method.response.header.test-method-response-header" : "'static value'" }, "responseTemplates" : { "application/json" : "json 400 response template", "application/xml" : "xml 400 response template" } } } } }, "get": { "parameters": [ { "name": "q1", "in": "query", "required": true } ], "responses": { "200": { "schema": { "type": "array", "items": { "$ref": "#/definitions/Error" } }, "headers" : { "test-method-response-header" : { "type" : "string" } } } }, "security" : [{ "api_key" : [] }], "x-amazon-apigateway-auth" : { "type" : "none" }, "x-amazon-apigateway-integration" : { "type" : "http", "uri" : "http://petstore-demo-endpoint.execute-api.com/petstore/pets", "httpMethod" : "GET", "requestParameters": { "integration.request.querystring.type": "method.request.querystring.q1" }, "responses" : { "2\\d{2}" : { "statusCode" : "200" }, "default" : { "statusCode" : "400", "responseParameters" : { "method.response.header.test-method-response-header" : "'static value'" }, "responseTemplates" : { "application/json" : "json 400 response template", "application/xml" : "xml 400 response template" } } } } } } }, "definitions": { "RequestBodyModel": { "type": "object", "properties": { "id": { "type": "integer" }, "type": { "type": "string", "enum": ["dog", "cat", "fish"] }, "name": { "type": "string" }, "price": { "type": "number", "minimum": 25, "maximum": 500 } }, "required": ["type", "name", "price"] }, "Error": { "type": "object", "properties": { } } } }