我有一个 openApi 规范,其中包括以下内容:
MyType:
type: string
enum:
- foo
- baz
用作:
"/v1/configuration/{configType}":
get:
operationId: GetConf
parameters:
- name: configType
in: path
required: true
schema:
$ref: "#/components/schemas/MyType"
Java 生成枚举为:
public enum ConfigTypePathParamEnum {
FOO("foo"),
BAZ("baz")
为端点编写测试后,我只能以“/v1/configuration/FOO”访问 foo 端点(返回 http 错误代码 400)。我想要的是“/v1/configuration/foo”工作。
这个问题类似,但不完全相同: openApi 架构中不区分大小写的字符串参数
我使用的是openapi生成器版本5.2.0。
我使用 spring-boot,这让 Jackson 也随之而来。 Jackson 有一些很好的注释来控制序列化/反序列化,所以我所要做的就是将此方法添加到我的枚举中:
@JsonValue
public String toJson() {
return name().toLowerCase().replaceAll("_","-");
}
注意:由于我们使用 kebab-case 而不是 SNAKE_CASE,因此我们还为下划线切换破折号。
添加“x-enum-varnames”属性后它就起作用了。
我的类型: 类型:字符串 枚举: - 富 - 巴兹 x-枚举变量名: - 富 - 酒吧