swagger path $ref для запросов OPTIONS

Я хочу создать развертывание шлюза API из файла swagger.yml. Мне нужно поддерживать CORS для всех конечных точек. Все мои определения пути options абсолютно одинаковы. Как определить путь options в одном месте и $ref там, где я хочу его использовать?

Я надеялся сделать что-то вроде этого (обратите внимание на $ref: '#/definitions/CorsOptions' на том же уровне, что и get):

---
swagger: "2.0"
info:
  version: "2016-10-26T03:15:31Z"
  title: "corstest"
host: ""
basePath: ""
schemes:
- "https"
paths:
  /page:
    get:
      produces:
      - "application/json"
      responses:
        200:
          description: "200 response"
          schema:
            $ref: "#/definitions/Empty"
          headers:
            Access-Control-Allow-Origin:
              type: "string"
      x-amazon-apigateway-integration:
        responses:
          default:
            statusCode: "200"
            responseParameters:
              method.response.header.Access-Control-Allow-Origin: "'*'"
        uri: "arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:1234:function:myLambdaFunc/invocations"
        passthroughBehavior: "when_no_match"
        httpMethod: "GET"
        type: "aws_proxy"
    $ref: '#/definitions/CorsOptions'
definitions:
  Empty:
    type: "object"
    title: "Empty Schema"
  CorsOptions:
    options:
      consumes:
      - "application/json"
      produces:
      - "application/json"
      responses:
        200:
          description: "200 response"
          schema:
            $ref: "#/definitions/Empty"
          headers:
            Access-Control-Allow-Origin:
              type: "string"
            Access-Control-Allow-Methods:
              type: "string"
            Access-Control-Allow-Headers:
              type: "string"
            Cache-Control:
              type: "string"
      x-amazon-apigateway-integration:
        responses:
          default:
            statusCode: "200"
            responseParameters:
              method.response.header.Access-Control-Allow-Methods: "'DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT'"
              method.response.header.Access-Control-Allow-Headers: "'Content-Type,Authorization,X-Amz-Date,X-Api-Key,X-Amz-Security-Token'"
              method.response.header.Access-Control-Allow-Origin: "'*'"
        requestTemplates:
          application/json: "{\"statusCode\": 200}"
        passthroughBehavior: "when_no_match"
        type: "mock"

Этот yaml не проходит проверку swagger. Как я могу выполнить то, что я пытаюсь сделать, чтобы мой файл yaml не был огромным и раздутым с тем же определением пути options.

спецификация swagger поддерживает $ref как path item object, однако я не могу понять, где я могу поместить это определение объект элемента пути. Я думаю, что импорт swagger API Gateway ограничивает извлечение yaml файлов из других мест, но я не уверен на 100%.


person rynop    schedule 26.10.2016    source источник


Ответы (2)


Я не думаю, что это сработает. В настоящее время API Gateway поддерживает только $ref для моделей и схем, а не для произвольных объектов. У нас есть элемент невыполненной работы для поддержки $ref в большем количестве мест, поэтому мы можем добавить поддержку для этого в конечном итоге.

person MikeD at AWS    schedule 26.10.2016