Swagger: стратегия allOf для нескольких ссылок / типов - PullRequest
0 голосов
/ 03 марта 2020

Я использую swagger для генерации кода со следующим yaml (вот фрагмент файла):

  Foo:
    type: object
    properties:
      someValue:
        type: integer
    required:
      - someValue

  Bar:
    type: object
    properties:
      anotherValue:
        type: string
    required:
      - anotherValue

  ComplexFooBar1:
    allOf:
      - $ref: '#/definitions/Foo'
      - $ref: '#/definitions/Bar'

  ComplexFooBar2:
    allOf:
      - $ref: '#/definitions/Foo'
      - type: object
        properties:
          someValueAgain:
            type: integer
        required:
          - someValueAgain
      - type: object
        properties:
          anotherValueAgain:
            type: string
        required:
          - anotherValueAgain

И у меня есть следующий результат для классов ComplexFooBar (опять же, только фрагменты на Java):

public class ComplexFooBar1 extends Foo {
  private String anotherValue = null;
...
public class ComplexFooBar2 extends Foo {
  private String anotherValueAgain = null;
...

У меня есть вопросы относительно этого результата:

  1. У меня есть класс ComplexFooBar1, который реализует класс Foo. Какова стратегия определения родительского класса? Почему я получил класс Foo как родитель, а не класс Bar? Это только из-за порядка? Означает ли это, что 'allOf' имеет смысл только в случае 'ref' (не 'type') в качестве первого элемента в массиве?
  2. У меня есть класс ComplexFooBar2, который имеет только одно свойство (anotherValueAgain) Но их было два. Где находится 'SomeValueAgain'? Это просто из-за 'anotherValueAgain' просто переопределяет 'someValueAgain' (опять же, из-за его порядка)? Означает ли это, что swagger интерпретирует свойства в разделе 'type' как собственные свойства класса? И по этой причине нельзя использовать два раздела типа для одного allOf?
...