Swagger: Как указать атрибут oneOf для встроенного элемента ответа? - PullRequest
1 голос
/ 03 августа 2020

Предположим, что у нас есть следующий метод контроллера:

@ApiResponses(value = {@ApiResponse(responseCode = "200")})
@GetMapping(value = "/animals", produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseStatus(HttpStatus.OK)
public Flux<AnimalResponse> getAnimals() {

    return Flux.just(new AnimalResponse(new Dog("animal", "dog")));

}

где AnimalResponse выглядит так:

class AnimalResponse {
    private Animal animal;
}

и Animal класс является абстрактным классом:

abstract class Animal {

    private String animal;
}

, который расширен двумя классами Dog и Cat:

class Cat extends Animal {
    private String cat; 
}


class Dog extends Animal {
    private String dog; 
}

В конфигурации Swagger по умолчанию он показывает, что ответ контроллера содержит только одно поле animal, которое принадлежит абстрактному class Animal и никакой информации о других возможных полях. Мне кажется, мне нужно как-то указать свойство oneOf Swagger для класса Animal, но я не знаю, как это сделать правильно, потому что обычно атрибут oneOf определяется для Response Object не для встроенного элемента. Итак, не могли бы вы посоветовать?

...