如何在 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);
我在 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);