OpenAPI / Swagger 3.0: значение дискриминатора по умолчанию - PullRequest
1 голос
/ 04 августа 2020

Как установить дискриминатор по умолчанию для каждого дочернего класса?

Например, возьмем эту схему:

components:
  schemas:
    Pet:
      type: object
      required:
      - petType
      properties:
        petType:
          type: string
      discriminator:
        propertyName: petType
    Cat:
      allOf:
      - $ref: '#/components/schemas/Pet'
      - type: object
        # all other properties specific to a `Cat`
        properties:
          name:
            type: string
    Dog:
      allOf:
      - $ref: '#/components/schemas/Pet'
      - type: object
        # all other properties specific to a `Dog`
        properties:
          bark:
            type: string

Генераторы кода для приведенной выше схемы создадут клиента, в котором Значение petType должно быть явно установлено программистом. Почему для объекта Cat не может быть установлено значение petType Cat по умолчанию?

Я попытался использовать значение default, чтобы заставить его работать. Однако результирующий код включает затененные свойства (одно и то же свойство для дочернего и родительского элементов). родителя, чем ребенка.

components:
  schemas:
    Pet:
      type: object
      required:
      - petType
      discriminator:
        propertyName: petType
    Cat:
      allOf:
      - $ref: '#/components/schemas/Pet'
      - type: object
        # all other properties specific to a `Cat`
        properties:
          name:
            type: string
          petType:
            type: string
            default: 'Cat'
    Dog:
      allOf:
      - $ref: '#/components/schemas/Pet'
      - type: object
        # all other properties specific to a `Dog`
        properties:
          bark:
            type: string
          petType:
            type: string
            default: 'Dog'

Есть ли у вас какие-либо решения этой проблемы?

...