Почему Swagger Codegen преобразует перечисление ON / OFF строки в TRUE / FALSE? - PullRequest
1 голос
/ 11 апреля 2020

Я использую 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)

Бегунок:

java -jar ./libs/openapi-generator-cli-4.3.0.jar  generate \
       -i pet.yaml \
       -g spring \
       -o ./OUTPUT/api/

Вот моя схема OpenAPI:

openapi: "3.0.0"
....
CaptureStatus:
  type: object
  description: Holds current capture status.
  properties:
    status:
      type: string
      enum:
        - ON
        - OFF
      description: Capture status values.
....

Вывод:

  ....
  public enum StatusEnum {
    TRUE("true"),

    FALSE("false");

    private String value;

    StatusEnum(String value) {
      this.value = value;
    }
  ....

Почему кодоген переводит перечисление ON / OFF в TRUE / FALSE? Это не происходит при генерации с использованием Swagger Editor GUI.

1 Ответ

2 голосов
/ 11 апреля 2020

В YAML 1.1, on, off, y, n, yes и no являются логическими значениями . Это было изменено в YAML 1.2, эта версия больше не считает эти значения логическими значениями.

Похоже, что Swagger Codegen и OpenAPI Generator используют парсеры YAML 1.1. В этом случае вам нужно заключить 'ON' и 'OFF' в кавычки, чтобы рассматривать их как строки:

      enum:
        - 'ON'
        - 'OFF'
...