如何强制 DTO class 在 Swagger 模型中

How to force a DTO class to be in Swagger models

我有一个带有 Swagger 3.17.1 的 SpringBoot 应用程序。

我有一个摘要 class AbstractDtoClass 和一个扩展第一个的 DTO class DtoClass

我有几个 REST 请求定义,所有 returns 一个 AbstractDtoClass 对象,none returns DtoClass.

因此,Swagger 模型,即我可以在 "definitions" 和 /v2/api-docs 中找到的 DTO 模型,包含 AbstractDtoClass 但不包含 DtoClass

我也希望 DtoClass 加入 Swagger 模型。我该怎么做?

我尝试将 @SwaggerDefinition 放在 DtoClass 定义中。
我试图将 @ApiModel(parent = AbstractDtoClass.class) 放在 DtoClass 定义中。
我试图将 @ApiModel(subTypes = {DeclarationDto.class}, discriminator = "DeclarationDto") 放在 AbstractDtoClass 定义中,尽管我不确定我是否正确使用了鉴别器。

没有任何效果。

有人能帮帮我吗?

您可以使用以下方法添加不属于任何注释或可能是隐式的其他模型。

springfox.documentation.spring.web.plugins.Docket#additionalModels(ResolvedType first, ResolvedType... remaining)

下面是 DocketConfig 示例,

@Configuration
@EnableSwagger2
public class SwaggerConfig {

private final TypeResolver typeResolver;


public SwaggerConfig(final TypeResolver typeResolver) {
    this.typeResolver = typeResolver;
}

@Bean
public Docket docketApi() {
    return new Docket(DocumentationType.SWAGGER_2)
        .useDefaultResponseMessages(false)
        .apiInfo(apiInfo())
        .select()
        .apis(RequestHandlerSelectors.basePackage("com.rmurugaian.service.pricing.server"))
        .build()
        .additionalModels(typeResolver.resolve(DummyDTO.class));
}