具有多态性的Swagger UI未显示正确的模型

时间:2018-03-22 20:09:29

标签: spring-boot swagger swagger-ui

我的招摇UI(版本2.8.0)并不能很好地推断我的模型:

Audience.class:

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY)
@JsonSubTypes({
    @JsonSubTypes.Type(value = AudienceA.class, name = "AudienceA"),
    @JsonSubTypes.Type(value = AudienceB.class, name = "AudienceB")
})
public interface Audience {
    void doSomething();
}

AudienceA.class:

public class AudienceA implements Audience {

    private String someStringField;

    public AudienceA(){
    }

    @Override
    public void doSomething(){
        //do some stuff
    }

    public String getSomeStringField(){
         return someStringField;
    }
}

AudienceB.class:

与AudienceA类相似。

SwaggerUI显示一个空模型:

enter image description here

我期待显示有关AudienceA或AudienceB模型的内容。这是UI的预期行为吗?

感谢。

1 个答案:

答案 0 :(得分:-1)

Swagger遇到了多态问题,尤其是Swagger 2.0。 Open API 3.0纠正了很多这些问题 您可能需要查看以下链接,以了解如何在Open API 3.0中处理多态性

Open API 3.0 - https://swagger.io/docs/specification/data-models/inheritance-and-polymorphism/ 哪里有另一个帖子可能解决你在这里提到的问题 https://groups.google.com/forum/#!msg/swagger-swaggersocket/1z0f0pLplrM/WylVo2ioDAAJ