我可以在 swagger-codegen 中定义新的 mustache 模板变量吗?

Posted

技术标签:

【中文标题】我可以在 swagger-codegen 中定义新的 mustache 模板变量吗?【英文标题】:Can I define new mustache template variables in swagger-codegen? 【发布时间】:2021-11-23 14:11:20 【问题描述】:

我开发了一个根据我的产品需求定制的 rest-api 客户端(java 中)。我想使用我的 rest api 客户端使用基于 yaml 文件的 swagger-codegen 模块生成测试。

我已经扩展了DefaultCodegenConfig 甚至尝试实现CodegenConfig 接口来构建我的自定义jar。我已经自定义了api.mustacheapi_test.mustache 文件,并将它们传递给我的CustomCodeGen 扩展DefaultCodegenConfigconstructorprocessOpts() 方法。

但是,我想使用我在自定义 api.mustache 中添加的自定义/新 mustache 模板变量。

例如如果参考标准api.mustache,它通常使用的模板变量是

 - classname 
 - #operation 
 - #contents 
 - #parameters 

等等

现在,我想介绍一个新的模板变量,比如说custom_param。现在我不清楚如何将这个新模板变量与实现集成。

从这里发布的Mustache-Template-Variables 看起来,swagger-codegen 不允许添加新的模板变量,也许我们仅限于此页面上提到的变量。

那么,有什么方法可以让新的模板变量起作用吗?

【问题讨论】:

【参考方案1】:

前段时间我为 bean 验证添加了 uniqueItems 参数,因为它没有被引擎处理,即使它是已实现 JSR 的一部分。

所以我认为代码库需要更新以使用您自己的变量,这只有在您分叉代码时才有可能。

如果有帮助,这两个是 PR - https://github.com/swagger-api/swagger-codegen/pull/10154(查询参数) https://github.com/swagger-api/swagger-codegen/pull/10490(用于正文参数)

【讨论】:

是的,这样的定制对于源代码的更改是不可行的。

以上是关于我可以在 swagger-codegen 中定义新的 mustache 模板变量吗?的主要内容,如果未能解决你的问题,请参考以下文章

Swagger-Codegen:如何将所有文件合并到一个文件中以进行客户端代码生成

将 swagger-codegen 项目导入现有的 Android 项目

将生成的 Flask 应用程序代码(Swagger-Codegen)粘合到后端实现的最简洁方法

Swagger-Codegen 不使用供应商扩展 x-discriminator-value

swagger-codegen 或 openapi-generator PHP 版本

java:swagger-codegen生成CSharp(C#) Client