【问题标题】:Springfox swagger inheritance supportSpringfox swagger 继承支持
【发布时间】:2018-03-08 16:51:15
【问题描述】:

有没有办法在 springfox swagger (2.7.0) 中暴露继承/多态性?我知道招摇规范支持 allOf。 springfox 支持这个吗?下面是示例域模型。

@ApiModel
public abstract class Animal{
    private String name;
}

@ApiModel(parent=Animal.class)
public class Dog extends Animal{
    ...
}

@ApiModel(parent=Animal.class)
public class Cat extends Animal{
    ...
}

如果控制器返回 Animal,swagger 合约不会暴露 Cat 或 Dog。它只返回 Animal 及其属性。

【问题讨论】:

    标签: java swagger springfox


    【解决方案1】:
    @ApiModel(subTypes = {
    Dog.class,
    Cat.class},
    discriminator = "type")
    public abstract class Animal{
        private String name;
        public abstract AnimalType getType();
    }
    
    @ApiModel(parent=Animal.class)
    public class Dog extends Animal{
        ...
    }
    
    @ApiModel(parent=Animal.class)
    public class Cat extends Animal{
        ...
    }
    
    public enum AnimalType{
    CAT,
    DOG;
    }
    

    上述解决方案对我有用,但仅记录包含所有选项(类型)的父类。

    【讨论】:

      【解决方案2】:

      对多态性的支持仍然不可用(使用 2.9.2)。我们在项目中为记录模型所做的只是简单地手动添加它们。

      在你的 swaggerConfig 中:

      @Bean
      public Docket apiDocumentation() {
          TypeResolver typeResolver = new TypeResolver();
          return new Docket(DocumentationType.SWAGGER_2)
                      .additionalModels(
                          typeResolver.resolve(type1.class),
                          typeResolver.resolve(type2.class),
                          typeResolver.resolve(typeX.class));
      }
      

      这应该使模型在 swagger-ui 中可用

      【讨论】:

        【解决方案3】:

        在您发布 Spring-fox 时,它还没有添加对多态性的支持。但是,2.9.0 版本似乎添加了它。签出this

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-04-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-04-14
          • 2016-11-13
          相关资源
          最近更新 更多