为什么 Swagger Codegen 将 ON/OFF 字符串枚举转换为 TRUE/FALSE?

San*_*nnu 6 yaml openapi swagger-codegen openapi-generator

我正在使用 Swagger Codegen 3.0.19,还尝试了 OpenAPI Generator 4.0.3。

Java环境:

Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
Run Code Online (Sandbox Code Playgroud)

跑步者:

java -jar ./libs/openapi-generator-cli-4.3.0.jar  generate \
       -i pet.yaml \
       -g spring \
       -o ./OUTPUT/api/
Run Code Online (Sandbox Code Playgroud)

这是我的 OpenAPI 架构:

Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
Run Code Online (Sandbox Code Playgroud)

输出是:

java -jar ./libs/openapi-generator-cli-4.3.0.jar  generate \
       -i pet.yaml \
       -g spring \
       -o ./OUTPUT/api/
Run Code Online (Sandbox Code Playgroud)

为什么代码生成器将 ON/OFF 枚举转换为 TRUE/FALSE?当我使用 Swagger Editor GUI 生成时,它不会执行此操作。

Hel*_*len 8

在 YAML 1.1 中,、onoffyn和是布尔值。这在 YAML 1.2 中发生了变化,该版本不再将这些值视为布尔值。yesno

看起来 Swagger Codegen 和 OpenAPI Generator 使用 YAML 1.1 解析器。在这种情况下,您需要将'ON'和 括'OFF'在引号中以将它们视为字符串:

      enum:
        - 'ON'
        - 'OFF'
Run Code Online (Sandbox Code Playgroud)