首页 > 解决方案 > Swagger:如何为响应的嵌入元素指定 oneOf 属性?

问题描述

假设我们有以下控制器方法:

@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;
}

扩展了两个类DogCat

class Cat extends Animal {
    private String cat; 
}


class Dog extends Animal {
    private String dog; 
}

使用默认的 Swagger 配置,它显示控制器响应仅包含一个animal属于抽象类的字段,Animal而没有关于其他可能字段的信息。在我看来,我需要以某种方式oneOf为类指定 Swagger 属性Animal,但我不知道如何正确执行,因为通常为不为嵌入元素oneOf定义的属性。Response Object那么,请您给点建议吗?

标签: javaswaggerswagger-ui

解决方案


推荐阅读