Swagger 2 UI 如何显示 RestController 未明确返回的模型
Swagger 2 UI How to show models that are not explicitly returned by RestController
我有以下问题,在模型下大摇大摆,我只看到抽象基础 class 由其他 3 个 class 扩展。我当前的终点 returns class 的基本类型,因为我可以在一个终点上返回 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();
}
所以我遇到的问题是大摇大摆 UI,在模型部分我只看到 BaseClass 而没有其他 classes...
我试过了,因为我在某个地方看到过这个例子:
@ApiModel(description = "Base Details.", subTypes = {AnotherClass.class})
BaseClass
但是这样我有 "kotlin" 问题,也就是说 "name is missing",我也做不到 AnotherClass::class...
您必须在配置中添加如下内容:
return new Docket(DocumentationType.SWAGGER_2)
.additionalModels(typeResolver.resolve(AnotherClass.class), typeResolver.resolve(OneMoreClass.class))
.....
subTypes
在 Swagger 2 中仍然没有完全支持,还有一个开放的 ticket
对于您的 Kotlin 配置,它应该是这样的:
subTypes = [AnotherClass::class, OneMoreClass::class]
我刚刚在我的 github project 中添加了一个示例 Kotlin 控制器供您参考。查找 AnimalController.kt
& SwaggerConfig
以获得所需的设置。
我有以下问题,在模型下大摇大摆,我只看到抽象基础 class 由其他 3 个 class 扩展。我当前的终点 returns class 的基本类型,因为我可以在一个终点上返回 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();
}
所以我遇到的问题是大摇大摆 UI,在模型部分我只看到 BaseClass 而没有其他 classes...
我试过了,因为我在某个地方看到过这个例子:
@ApiModel(description = "Base Details.", subTypes = {AnotherClass.class})
BaseClass
但是这样我有 "kotlin" 问题,也就是说 "name is missing",我也做不到 AnotherClass::class...
您必须在配置中添加如下内容:
return new Docket(DocumentationType.SWAGGER_2)
.additionalModels(typeResolver.resolve(AnotherClass.class), typeResolver.resolve(OneMoreClass.class))
.....
subTypes
在 Swagger 2 中仍然没有完全支持,还有一个开放的 ticket
对于您的 Kotlin 配置,它应该是这样的:
subTypes = [AnotherClass::class, OneMoreClass::class]
我刚刚在我的 github project 中添加了一个示例 Kotlin 控制器供您参考。查找 AnimalController.kt
& SwaggerConfig
以获得所需的设置。