2017-12-16 17 views
0

x-amazon-apigateway-request-validator를 사용하여 요청 매개 변수의 유효성을 검사하려고했지만 불행히도 작동하지 않습니다. 아래 swagger 파일입니다 -AWS API 게이트웨이 쿼리 매개 변수 유효성 검사

{ 
    "swagger": "2.0", 
    "info": { 
    "title": "API Gateway - Request Validation Demo" 
    }, 
    "schemes": [ 
    "https" 
    ], 
    "produces": [ 
    "application/json" 
    ], 
    "x-amazon-apigateway-request-validators" : { 
    "full" : { 
     "validateRequestBody" : true, 
     "validateRequestParameters" : true 
    }, 
    "body-only" : { 
     "validateRequestBody" : true, 
     "validateRequestParameters" : false 
    } 
    }, 
    "x-amazon-apigateway-request-validator" : "full", 
    "paths": { 
    "/orders": { 
     "post": { 
     "x-amazon-apigateway-request-validator": "body-only", 
     "parameters": [ 
      { 
      "in": "body", 
      "name": "CreateOrders", 
      "required": true, 
      "schema": { 
       "$ref": "#/definitions/CreateOrders" 
      } 
      } 
     ], 
     "responses": { 
      "200": { 
      "schema": { 
       "$ref": "#/definitions/Message" 
      } 
      }, 
      "400" : { 
      "schema": { 
       "$ref": "#/definitions/Message" 
      } 
      } 
     }, 
     "x-amazon-apigateway-integration": { 
      "responses": { 
      "default": { 
       "statusCode": "200", 
       "responseTemplates": { 
       "application/json": "{\"message\" : \"Orders successfully created\"}" 
       } 
      } 
      }, 
      "requestTemplates": { 
      "application/json": "{\"statusCode\": 200}" 
      }, 
      "passthroughBehavior": "never", 
      "type": "mock" 
     } 
     }, 
     "get": { 
     "x-amazon-apigateway-request-validator": "full", 
     "parameters": [ 
      { 
      "in": "header", 
      "name": "Account-Id", 
      "required": true 
      }, 
      { 
      "in": "query", 
      "name": "type", 
      "required": false, 
      "schema": { 
       "$ref": "#/definitions/InputOrders" 
      } 
      } 
     ], 
     "responses": { 
      "200" : { 
      "schema": { 
       "$ref": "#/definitions/Orders" 
      } 
      }, 
      "400" : { 
      "schema": { 
       "$ref": "#/definitions/Message" 
      } 
      } 
     }, 
     "x-amazon-apigateway-integration": { 
      "responses": { 
      "default": { 
       "statusCode": "200", 
       "responseTemplates": { 
       "application/json": "[{\"order-id\" : \"qrx987\",\n \"type\" : \"STOCK\",\n \"symbol\" : \"AMZN\",\n \"shares\" : 100,\n \"time\" : \"1488217405\",\n \"state\" : \"COMPLETED\"\n},\n{\n \"order-id\" : \"foo123\",\n \"type\" : \"STOCK\",\n \"symbol\" : \"BA\",\n \"shares\" : 100,\n \"time\" : \"1488213043\",\n \"state\" : \"COMPLETED\"\n}\n]" 
       } 
      } 
      }, 
      "requestTemplates": { 
      "application/json": "{\"statusCode\": 200}" 
      }, 
      "passthroughBehavior": "never", 
      "type": "mock" 
     } 
     } 
    } 
    }, 
    "definitions": { 
    "CreateOrders": { 
     "$schema": "http://json-schema.org/draft-04/schema#", 
     "title": "Create Orders Schema", 
     "type": "array", 
     "minItems" : 1, 
     "items": { 
     "type": "object", 
     "$ref" : "#/definitions/Order" 
     } 
    }, 
    "Orders" : { 
     "type": "array", 
     "$schema": "http://json-schema.org/draft-04/schema#", 
     "title": "Get Orders Schema", 
     "items": { 
     "type": "object", 
     "properties": { 
      "order_id": { "type": "string" }, 
      "time" : { "type": "string" }, 
      "state" : { 
      "type": "string", 
      "enum": [ 
       "PENDING", 
       "COMPLETED" 
      ] 
      }, 
      "order" : { 
      "$ref" : "#/definitions/Order" 
      } 
     } 
     } 
    }, 
    "Order" : { 
     "type": "object", 
     "$schema": "http://json-schema.org/draft-04/schema#", 
     "title": "Schema for a single Order", 
     "required": [ 
     "account-id", 
     "type", 
     "symbol", 
     "shares", 
     "details" 
     ], 
     "properties" : { 
     "account-id": { 
      "type": "string", 
      "pattern": "[A-Za-z]{6}[0-9]{6}" 
     }, 
     "type": { 
      "type" : "string", 
      "enum" : [ 
      "STOCK", 
      "BOND", 
      "CASH"] 
     }, 
     "symbol" : { 
      "type": "string", 
      "minLength": 1, 
      "maxLength": 4 
     }, 
     "shares": { 
      "type": "number", 
      "minimum": 1, 
      "maximum": 1000 
     }, 
     "details": { 
      "type": "object", 
      "required": [ 
      "limit" 
      ], 
      "properties": { 
      "limit": { 
       "type": "number" 
      } 
      } 
     } 
     } 
    }, 
    "InputOrder" : { 
     "type": "object", 
     "$schema": "http://json-schema.org/draft-04/schema#", 
     "title": "Schema for a Input Order", 
     "required": [ 
     "type" 
     ], 
     "properties" : { 
     "type": { 
      "type" : "string", 
      "enum" : [ 
      "STOCK", 
      "BOND", 
      "CASH"] 
     } 
     } 
    }, 
    "Message": { 
     "type": "object", 
     "properties": { 
     "message" : { 
      "type" : "string" 
     } 
     } 
    } 
    } 
} 

일부 정규식 및 enum 값에 대한 요청 매개 변수의 유효성을 검사하려고합니다.

이것이 가능한지 확실하지 않습니다. 아무도 이걸로 나를 도울 수 있습니까?

답변

0

HTTP 매개 변수 유효성 검사의 경우 API 게이트웨이는 '필수'로만 표시를 지원합니다. 매개 변수에 대한 정규 표현식/열거 형 값을 지원하지 않습니다.

+0

예, 많은 것을 읽은 후에 알게되었습니다. 요약 해 주셔서 대단히 감사합니다. – Abie