【问题标题】:How to force a DTO class to be in Swagger models如何强制 DTO 类在 Swagger 模型中
【发布时间】:2020-05-14 16:29:39
【问题描述】:

我有一个带有 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】:

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

    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));
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-20
      • 2020-07-12
      • 1970-01-01
      • 2010-10-19
      • 1970-01-01
      • 2020-03-25
      • 1970-01-01
      • 2021-11-27
      相关资源
      最近更新 更多