如何在 Swagger 中指定不区分大小写的枚举?

How can I specify a case-insensitive enum in Swagger?

我在 Java 中有一个枚举,我想在我的 REST API 中将它用作 GET 请求中的参数 - 其中 swagger 文档是从 [=26= 中的注释生成的] 控制器。

枚举本身可以使用不区分大小写的值,但根据 Java 约定使用大写值定义。

public enum SortDirection {

  ASC, DESC;

  public static SortDirection fromString(String value) { 
    try {
      return SortDirection.valueOf(value.toUpperCase(Locale.US));
    } catch(Exception e) {
      throw new IllegalArgumentException("Invalid value " + value + ". Valid values are 'asc' or 'desc' (case insensitive).", e);
    }
  }
}

fromString 允许将小写字母作为有效选项传递,因为 URL 使用小写字母更为常见。

如果我使用默认值 asc swagger 将抛出验证错误:

Default values must be present in enum

如何指定小写和大写都是有效选项并设置默认值 asc

您可以尝试在方法签名中使用io.swagger.annotations.ApiParam:

public void controllerMethod(
       @ApiParam(allowableValues="asc,desc") @RequestParam SortDirection sortDirection);