Java REST 点的 Openapi 规范,枚举始终大写

问题描述 投票:0回答:2

我有一个 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。

java enums openapi
2个回答
0
投票

我使用 spring-boot,这让 Jackson 也随之而来。 Jackson 有一些很好的注释来控制序列化/反序列化,所以我所要做的就是将此方法添加到我的枚举中:

@JsonValue
public String toJson() {
    return name().toLowerCase().replaceAll("_","-");
}

注意:由于我们使用 kebab-case 而不是 SNAKE_CASE,因此我们还为下划线切换破折号。


0
投票

添加“x-enum-varnames”属性后它就起作用了。

我的类型: 类型:字符串 枚举: - 富 - 巴兹 x-枚举变量名: - 富 - 酒吧

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.