java 具有多个值的OpenApi枚举

cgyqldqp  于 2023-01-04  发布在  Java
关注(0)|答案(3)|浏览(169)

我是OpenApi的新手,想用api.yaml(OpenApiversion3.0.1)定义我的API,问题是生成的枚举只包含名称而不包含值。
这是我的代码中的枚举:

TEST1(1, "Test 1", "T1"),
    TEST2(2, "Test 2", "T2"),
    TEST3(3, "Test 3", "T2");

这是用OpenApi生成的枚举:

TEST1("TEST1"),
    TEST2("TEST2"),
    TEST3("TEST3");

枚举自动定义如下:

testenum:
          type: string
          description: desciption of the enum
          enum:
            - TEST1
            - TEST2
            - TEST3

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

fnvucqvd

fnvucqvd1#

这可能不是本地支持的。
检查负责生成代码的模板,例如:https://github.com/OpenAPITools/openapi-generator/blob/master/modules/openapi-generator/src/main/resources/JavaSpring/enumOuterClass.mustache。注意,这是针对spring的。但是,您应该能够轻松地导航到所需的框架。
所以,你可以(只是一些想法):
1.提供您自己的模板(请参阅:https://openapi-generator.tech/docs/templating)或
1.使用忽略文件https://openapi-generator.tech/docs/customization/#ignore-file-format并手动定义/编码枚举

oyt4ldly

oyt4ldly2#

这可能不是一个让代码看起来很好的方向,但是,总是有这样的选择:编写一个程序/构建任务,它将在生成文件之后,但在编译之前,以您需要的方式编辑生成的文件。就基本原理而言,这可能是一个糟糕的想法,但尽管很脏,但它可能是有效的。

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()
h9a6wy2h

h9a6wy2h3#

参数:

  • 名称:状态:查询架构:类型:字符串枚举:[有效、无效、删除]

相关问题