在 Spring Boot 中使用 openapi 使用 @Schema(allowableValues=) 作为枚举参数

sou*_*oul 11 java swagger spring-boot openapi

我的 API 在请求正文中有一个枚举字段。当我生成 swagger UI 时,它显示枚举,其中允许的值作为枚举名称。我需要将其设置为枚举值,而不是枚举名称。为此,我使用了 @Schema(allowableValues=)。这会导致 swagger UI 中出现一个包含值和名称的列表。我可以仅在 swagger 中将其设置为值吗?

我的枚举示例:

 public enum Days{
  MON("Monday"),
  SUN("Sunday")
}
Run Code Online (Sandbox Code Playgroud)

当前的 swagger 字段如下所示:

日期字符串枚举:[ MON, SUN ]

我想要它有:

日期字符串枚举:[星期一、星期日]

当我将 @Schema(allowableValues={"Monday", "Sunday") 添加到枚举字段时,Swagger 变为:

日期字符串枚举:[ MON、SUN、星期一、星期日]

任何解决方案表示赞赏。

在此输入图像描述

小智 10

使用

@Schema(type = "string", allowableValues = { "Monday", "Sunday" })
Run Code Online (Sandbox Code Playgroud)


sou*_*oul 6

可以通过覆盖 enum 的 toString 来实现。无需使用@Schema

 @Override
  public String toString() {
    return value;
  }
Run Code Online (Sandbox Code Playgroud)