Springfox Swagger继承支持

9

有没有办法在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,Swagger合同不会暴露Cat或Dog。它只返回具有其属性的Animal。
3个回答

2

在您发布此信息时,Spring-fox尚未支持多态性。然而,2.9.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
@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.9.2上对我不起作用。 - Samet Baskıcı

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接