如何在Swagger模型中强制使用DTO类

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

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

我有一个抽象类AbstractDtoClass和一个扩展了第一个的DTO类DtoClass

我有几个REST请求定义,并且都返回一个AbstractDtoClass对象,没有一个返回DtoClass

结果,Swagger模型(即我可以在/ v2 / api-docs的“定义”中找到的DTO模型包含AbstractDtoClass,但不包含DtoClass

我也希望DtoClass出现在Swagger模型中。我该怎么办?

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

没有任何作用。

谁能帮我吗?

java spring swagger dto
1个回答
0
投票

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

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));
}
© www.soinside.com 2019 - 2024. All rights reserved.