当前位置: 首页 > 知识库问答 >
问题:

Swagger不显示继承的对象

和嘉澍
2023-03-14

我有一个类“SubModel”,它继承自类“SuperModel”。我的REST请求返回这些类之一的对象。现在,我想在我的Swagger UI中记录,要么返回SubModel的对象,要么返回SuperModel的一个对象。我在谷歌上搜索了这个用例,发现了@ApiModel注释,但它们不起作用,有人知道我在这里做错了什么吗?

@ApiModel(value = "SuperModel", discriminator = "foo", subTypes = { 
SubModel.class })
public class SuperModel
{
    @ApiModelProperty(required = true)
    private String foo;

    public String getFoo() {
        return this.foo;
    }

    public void setFoo( String foo ) {
        this.foo = foo;
    }
}  

@ApiModel(value = "SubModel")
public class SubModel extends SuperModel
{
    private int    number;

    public int getNumber() {
        return this.number;
    }

    public void setNumber( int number ) {
        this.number = number;
    }
}

我在Swagger UI中看到的只是:

SuperModel {
  foo (string)
}

我在这个站点找到了这个例子:https://github . com/swagger-API/swagger-core/wiki/Annotations # API responses-API response但是它不起作用:-(

有什么想法吗?多谢!

共有1个答案

劳豪
2023-03-14

springfox还不支持这一点。参见https://github.com/springfox/springfox/issues/868

是的,这是令人困惑的,因为它们确实有带有“鉴别器”和“子类型”等属性的注释,但是它们不起作用。

更新:该问题在此期间(2018年3月)已关闭,它应该在Springfox中起作用

 类似资料:
  • 有没有办法在springfox swagger(2.7.0)中暴露遗传/多态性?我知道昂首阔步规范支持所有的。springfox支持这个吗?下面是示例域模型。 若控制者归还动物,那个么《大摇大摆》合同不会暴露猫或狗。它只返回带有属性的动物。

  • 面向对象编程很重要的一个方面,就是对象的继承。A 对象通过继承 B 对象,就能直接拥有 B 对象的所有属性和方法。这对于代码的复用是非常有用的。 大部分面向对象的编程语言,都是通过“类”(class)实现对象的继承。传统上,JavaScript 语言的继承不通过 class,而是通过“原型对象”(prototype)实现,本章介绍 JavaScript 的原型链继承。 ES6 引入了 class

  • 我有一个spring的网络应用程序,我增加了swagger和swagger-UI。我添加了一个虚拟类来测试Swagger: 构建/部署之后,我可以在swagger页面上看到虚拟类(参见附件1)。问题是,“列表操作”没有显示任何内容。原始输出如下: 我想,问题是一个缺失的标签“操作”或类似的东西……但我不确定(也不知道,如何修复这一点)。有什么建议吗?

  • 问题内容: 偏重于继承而不是继承 是非常流行的短语。我读了几篇文章,最后每篇文章都说 当类之间存在纯IS-A关系时,请使用继承。 本文中的一个示例: 在 Apple 和 Fruit 之间存在明显的IS-A关系,即Apple IS-A Fruit,但作者也将其显示为Apple HAS-A Fruit(组成),以显示通过继承实现时的陷阱。 我在这里变得有些困惑,声明的含义是什么 当类之间存在纯IS-A

  • 问题内容: 是否有理由要声明类声明object? 我刚刚找到了执行此操作的代码,但找不到很好的理由。 问题答案: 是否有理由要声明类声明object? 在Python 3中,除了Python 2和3之间的兼容性之外,没有任何理由。在Python 2中,原因很多。 Python 2.x故事: 在Python 2.x(从2.2开始)中,有两种类型的类,取决于是否存在object作为基类的类: “经典”

  • newGuest BrowserWindow (可选)