我可以在 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.mustache
和api_test.mustache
文件,并将它们传递给我的CustomCodeGen
扩展DefaultCodegenConfig
的constructor
和processOpts()
方法。
但是,我想使用我在自定义 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