首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多值OpenApi枚举

多值OpenApi枚举
EN

Stack Overflow用户
提问于 2022-04-14 13:53:03
回答 2查看 1.5K关注 0票数 2

我是OpenApi新手,我想用api.yaml (OpenApi版本3.0.1)定义api。我的问题是生成的枚举只包含名称,而不是值。

这是我的代码中的枚举:

代码语言:javascript
复制
    TEST1(1, "Test 1", "T1"),
    TEST2(2, "Test 2", "T2"),
    TEST3(3, "Test 3", "T2");

这是用OpenApi生成它之后的枚举:

代码语言:javascript
复制
    TEST1("TEST1"),
    TEST2("TEST2"),
    TEST3("TEST3");

枚举自动定义如下:

代码语言:javascript
复制
        testenum:
          type: string
          description: desciption of the enum
          enum:
            - TEST1
            - TEST2
            - TEST3

如何在我的api.yaml中定义枚举,使其看起来像第一个示例?

EN

回答 2

Stack Overflow用户

发布于 2022-04-21 07:17:12

这可能不是本地支持的。

检查负责生成代码的模板,例如:https://github.com/OpenAPITools/openapi-generator/blob/master/modules/openapi-generator/src/main/resources/JavaSpring/enumOuterClass.mustache。注意,这是春季的。但是,您应该能够轻松地导航到所需的框架。

所以,你可以(只是一些想法):

  1. 提供您自己的模板(参见:https://openapi-generator.tech/docs/templating)或
  2. 使用忽略文件https://openapi-generator.tech/docs/customization/#ignore-file-format,并手动定义/编码枚举(

)

票数 1
EN

Stack Overflow用户

发布于 2022-04-24 22:09:12

这可能不是代码的方向,但是,始终有编写程序/构建任务的选项,该任务将在生成文件后,但在编译之前,按照您需要的方式对生成的文件进行编辑。就基本面而言,这可能是一个糟糕的想法,但虽然肮脏,但它很可能奏效。

代码语言:javascript
复制
File f = new File("PATH/TO/ENUM/CLASS");

ArrayList<String> fileLines = Files.readAllLines(f.toPath());
ArrayList<String> outputList = new ArrayList<>();
for(String s : files){

if(s.contains( SOMETHING THAT YOU NEED TO CHANGE) ) {
outList.add(CHANGED VALUE);
}
else {
outList.add(s);
}
}

//However you prefer to, write to the file
//file.delete()
//file.createNewFile();
//outList.forEach(WRITE TO FILE); 
//file.save()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71872797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档