Springfox swagger继承支持

时间:2017-09-27 09:07:59

标签: java swagger springfox

有没有办法在springfox swagger(2.7.0)中公开继承/多态?我知道swagger规范支持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,那么招摇合同并不会暴露Cat或Dog。它只返回Animal的属性。

3 个答案:

答案 0 :(得分:1)

仍然不支持多态(使用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中可用

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

像上面的解决方案对我有用,但是仅记录具有所有选项(类型)的父类。