【发布时间】:2020-04-04 13:22:20
【问题描述】:
我正在使用从以下依赖项导入的 Swagger/OpenApi V3 注释创建我们应用程序的 API 描述:
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>1.1.45</version>
</dependency>
其中一个注释是@Schema 注释,它接受名为allowableValues 的属性,该属性允许字符串数组:
@Schema(description = "example",
allowableValues = {"exampleV1", "exampleV2"},
example = "exampleV1", required = true)
private String example;
现在我想使用在我们的 Enum 类上构建的自定义方法,该方法返回允许的字符串数组,因此每次我们向 Enum 添加类型时都不需要添加它。这样我们就可以这样使用它:
public enum ExampleEnum {
EXAMPLEV1, EXAMPLEV2;
public static String[] getValues() {...}
}
@Schema(description = "example",
allowableValues = ExampleEnum.getValues(),
example = "exampleV1", required = true)
private String example;
现在这不会编译,因为在执行注解时方法是未知的。 有没有这样的解决方案允许在 swagger V3 注释属性值中使用 Enums?
查看了以下资源:
您可以在全局组件部分定义可重用的枚举,并通过 $ref 在别处引用它们。
在最坏的情况下,我确实可以将它定义在一个常量位置,并且在将类型添加到 Enum 之后,只需将类型添加到另一个位置。但如果可能的话,我首先想探索上述解决方案。
没有提及使用任何类或动态生成的值。
关于在 swagger 中记录枚举,而不是在 swagger 注释 API 中使用它们。
【问题讨论】:
标签: java enums annotations swagger openapi