首页 > 解决方案 > 使用 ng-swagger-gen 生成枚举

问题描述

我想从 SpringBoot Rest 服务在 Angular 应用程序中生成模型,为此我使用 ng-swagger-gen 插件。但不知何故,枚举仅作为内联字符串值而不是枚举类生成,因此每次我必须键入字符串值或自己在 Typescript 中创建 Enum 对象。

@Data
public class DummyClass {
   private DummyEnum dummyEnum;
}

public enum DummyEnum {
    One,
    Two,
    Three
}

并且只生成了 1 个代表模型的文件:

export interface DummyClass {
dummyEnum?: 'One' | 'Two' | 'Three';
}

大摇大摆的定义如下所示:

"definitions": {
"DummyClass": {
  "type": "object",
  "properties": {
    "dummyEnum": {
      "type": "string",
      "enum": [
        "One",
        "Two",
        "Three"
      ]
    }
  },
  "title": "DummyClass"
 }
}

相反,当我手动将定义更改为此时,一切看起来都不错,生成了 2 个文件,1 个类和 1 个枚举

"definitions": {
"DummyClass": {
  "type": "object",
  "properties": {
    "dummyEnum": {
      "$ref": "#/definitions/DummyEnum"
    }
  }
},
"DummyEnum": {
  "type": "string",
  "enum": [
    "One",
    "Two",
    "Three"
  ]
}
}

在打字稿中:

import { DummyEnum } from './dummy-enum';
  export interface DummyClass {
 dummyEnum?: DummyEnum;
  }

您能否建议正确的方法是什么?我迫切需要 Angular 应用程序中的枚举类,但我希望生成它们而不是手动创建它们。似乎 ng-swagger-gen 插件工作正常,但不知何故 Springfox Swagger2 将 Enums 视为第二类对象,因此未将它们包含在定义部分中。

谢谢

标签: angularenumsswaggerswagger-codegen

解决方案


推荐阅读