如何强制 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));
}
我有一个带有 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));
}