Swagger 2 UI如何显示RestController未显式返回的模型

问题描述 投票:0回答:1

我有以下问题,在模型下的招摇,我只看到抽象的基类,由其他3个类扩展。我当前的终点返回类的基类型,因为我可以在一个终点上返回3种不同的类型。

所以基本上我有这样的东西

@MappedSuperclass
@ApiModel(description = "Base Details.")
abstract class BaseClass(
    open var id: String? = null,
    var prop1: String? = null,
    var prop2: String? = null,
    var prop3: String? = null,
    var prop4: String? = null
)

@ApiModel(description = "Some Specific Details that contains all base properties.")
data class AnotherClass(
        val prop4: String,
        val prop5: String,
        val prop6: Set<Amount>,
        val prop7: Set<Amount>,
        val prop8: String
) : BaseClass()


@ApiModel(description = "Some more Specific Details that contains all base properties.")
data class OneMoreClass(
        val prop4: String,
        val prop5: String
) : BaseClass()


And in RestController i have this

    @GetMapping
    @ApiOperation(value = "End point description", notes = "Notes notes notes.")
    fun getSomethingFromDatabase(): List<BaseClass> {
        return someService.getData();
    }

所以我的问题是在swagger UI上,在模型部分下我只看到BaseClass而根本没有其他类...

我试过这个,因为在某个地方我看到了这个例子:

@ApiModel(description = "Base Details.", subTypes = {AnotherClass.class}) 
BaseClass 

但这种方式我有“kotlin”问题,就是说“名字不见了”,我也不能做AnotherClass :: class ...

spring-boot kotlin swagger swagger-ui swagger-2.0
1个回答
2
投票

你必须在配置中添加如下:

    return new Docket(DocumentationType.SWAGGER_2)
            .additionalModels(typeResolver.resolve(AnotherClass.class), typeResolver.resolve(OneMoreClass.class))
.....

在Swagger 2中仍然没有完全支持subTypes,仍然有一个开放的ticket

对于您的Kotlin配置,它应该是这样的:

subTypes = [AnotherClass::class, OneMoreClass::class]

我刚刚添加了一个示例Kotlin控制器供您参考我的github project。寻找AnimalController.ktSwaggerConfig进行必要的设置。

© www.soinside.com 2019 - 2024. All rights reserved.