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

Springfox-swagger继承支持

沈龙光
2023-03-14

有没有办法在springfox swagger(2.7.0)中暴露遗传/多态性?我知道昂首阔步规范支持所有的。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{
    ...
}

若控制者归还动物,那个么《大摇大摆》合同不会暴露猫或狗。它只返回带有属性的动物。

共有3个答案

章昱
2023-03-14
@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;
}

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

云镜
2023-03-14

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

在你的昂首阔步配置:

@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中可用

沈博延
2023-03-14

在您发布它时,SpringFox还没有添加对多态性的支持。然而,2.9.0版本似乎添加了它。看看这个

 类似资料:
  • 从2.7.0开始,SpringFox Swagger不支持继承: https://github.com/springfox/springfox/issues/1983 我有一个应用程序,它依赖于swagger支持继承这一事实,但仍然需要将库更新到2.8.0版本。 真的有可能以某种方式(甚至是肮脏的方式)为继承提供向后兼容性吗? 真的非常感谢任何帮助,谢谢

  • null 问题是: 当添加以下依赖项以实现“Spring Webflux+SpringFox+JSR303”时, 我得到以下错误, 另外,如果当前不支持JSR303,那么除了JSR303之外,还可以使用哪些其他验证注释?我不想使用Swagger核心注释,只是因为它会扰乱代码的可读性。

  • 现在我发现这个版本不支持java 7,但是我需要它用于一个遗留项目。从发行说明来看,很明显2.9.0将是支持java 7的最后一个版本。 我的问题是 - 如果我只有基本的swaggerconfig,如果我向下迁移到2.9.0,我需要做什么改变吗? 更新1 -版本2.9.1不支持Java 7。而在2.9.0版本上,它给出了“无法推断基础url”的错误。 我刚刚将版本号从2.9.2更改为2.9.0。在

  • 我使用的是swagger版本2.2.2。如果我转到地址http://localhost:8080/swagger-ui.html,我将直接获得swagger UI。有没有办法,一个安全层可以增加,像,用户应该提示输入用户id和密码之前,大摇大摆的UI显示?

  • 在springboot应用程序上下文中,我正在查找swagger的.json输出。

  • 但对于本地时间来说,我仍然在swagger-ui的示例和模型中得到这些 我读过一些东西,swagger规范不使用时间格式。这是不是有些关联?