Definiciones de OpenAPI de una API de ejemplo con la validación básica de solicitudes - Amazon API Gateway

Definiciones de OpenAPI de una API de ejemplo con la validación básica de solicitudes

La siguiente definición de OpenAPI define una API de ejemplo con la validación de solicitudes habilitada. La API es un subconjunto de la API PetStore. Expone un método POST para añadir una mascota a la colección pets y un método GET para consultar las mascotas de un tipo especificado.

Hay dos validadores de solicitudes declarados en el mapa x-amazon-apigateway-request-validators en el nivel de API. El validador params-only está habilitado en la API y lo hereda el método GET. Este validador permite a API Gateway verificar que el parámetro de consulta obligatorio (q1) está incluido y no está en blanco en la solicitud de entrada. El validador all está habilitado en el método POST. Este validador verifica que el parámetro de encabezado obligatorio (h1) está establecido y no está en blanco. También verifica que el formato de la carga útil se adhiere al especificado RequestBodyModel. Si no se encuentra un tipo de contenido coincidente, no se realiza la validación de la solicitud. Cuando se utiliza un modelo para validar el cuerpo, si no se encuentra ningún tipo de contenido coincidente, no se realiza la validación de la solicitud. Para utilizar el mismo modelo independientemente del tipo de contenido, especifique $default como la clave.

Este modelo exige que el objeto JSON de entrada contenga las propiedades name, type y price. La propiedad name puede ser cualquier cadena, type debe ser uno de los campos de la enumeración especificada (["dog", "cat", "fish"]) y price debe estar comprendido entre 25 y 500. El parámetro id no es obligatorio.

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": { } } } }