OpenAPI 3-重用属性

时间:2019-04-15 08:29:08

标签: swagger openapi

以下是OpenAPI 3定义的示例:

components:
  schemas:
    Foo:
      properties:
        string:
          type: string
        enumField:
          type: string
          enum: ['VALUE_1', 'VALUE_2']
    Bar:
      properties:
        enumField:
          type: string
          enum: ['VALUE_1', 'VALUE_2']

是否可以重用enumField还是每次使用时都必须指定它?

1 个答案:

答案 0 :(得分:2)

我不知道是否可以引用单个属性,但是您可以使用模式并通过拆分来实现。

这是您可以做什么的基本结构示例:

SchemaBase:
  type: object
  properties:
    foo:
      type: string

SchemaFull:
  allOf:
    - $ref: '#/components/schemas/SchemaBase'
    - type: object
      properties:
        bar:
          type: string

在您的情况下,可能是这样的:

components:
  schemas:
    EnumField:
      properties:
        enumField:
          type: string
          enum: ['VALUE_1', 'VALUE_2']
    Foo:
      allOf:
        - $ref: '#/components/schemas/EnumField'
        - properties:
            string:
              type: string
    Bar:
      allOf:
        - $ref: '#/components/schemas/EnumField'