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

问题描述 投票:0回答:2

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

我已经扩展了

DefaultCodegenConfig
,甚至尝试实现
CodegenConfig
接口来构建我的自定义 jar。我已经自定义了
api.mustache
api_test.mustache
文件,并将它们传递到扩展
constructor
processOpts()
CustomCodeGen
方法中。
但是,我想使用我在自定义

DefaultCodegenConfig

中添加的自定义/新胡子模板变量。

例如如果参考标准

api.mustache

,它通常使用的模板变量是 api.mustache

现在,我想引入一个新的模板变量,比如说

- {{classname}} - {{#operation}} - {{#contents}} - {{#parameters}}

。现在我不清楚如何将这个新模板变量与实现集成。

从这里发布的

Mustache-Template-Variables

看来,swagger-codegen不允许添加新的模板变量,也许我们只能使用本页提到的变量。 那么,有什么方法可以让新的模板变量起作用吗?

swagger mustache swagger-codegen template-variables
2个回答
1
投票
{{custom_param}}

参数用于 bean 验证,因为它没有被引擎处理,即使它是已实现的 JSR 的一部分。

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

如果有帮助,这两个是 PR:

查询参数:
    https://github.com/swagger-api/swagger-codegen/pull/10154
  1. . 对于正文参数:
  2. https://github.com/swagger-api/swagger-codegen/pull/10490

0
投票
uniqueItems

包含一个字段

DefaultCodegen
,它是可由
additionalProperties
模板引用的附加属性的映射。例如,在 Maven 项目中,您可以添加自定义模板变量
mustache
userAgent
,如下所示:
userOs

并且在任何 swagger codegen Mustache 模板(例如 api.mustache)中,这些新变量都可以使用语法 
<plugin> <groupId>io.swagger.codegen.v3</groupId> <artifactId>swagger-codegen-maven-plugin</artifactId> <version>3.0.35</version> <executions> <execution> <goals> <goal>generate</goal> </goals> <configuration> ... <additionalProperties>userAgent=Postman,userOs=FreeBSD</additionalProperties> ...

{{userAgent}}
 来使用
    

© www.soinside.com 2019 - 2024. All rights reserved.