如何在swagger codegen中生成构造函数?

2022-09-04 22:31:21

代码生成未生成任何构造函数。我指的是宠物店的swagger文件,使用了最新的swagger codegen jar文件。

但只生成了默认构造函数。

它不是基于其字段生成构造函数。

如何启用它?


答案 1

如果您确实需要一个带有参数的构造函数,则可以通过修改以 .moustache 结尾的模板文件来执行此操作。

“启用/使用/修改”模板

我假设您将要编辑现有模板,并希望每个模型都有一个构造函数。

下面是模型模板文件中构造函数的简单示例:

public {{classname}}( {{#vars}} {{datatype}} {{baseName}}{{^-last}},{{/-last}} {{#-last}}){
construct code here
}{{/-last}}{{/vars}}

请注意,这应该在 {{#model}} {{/model}} 标记之间

有关小胡子模板的更多信息,请参阅

https://mustache.github.io/mustache.5.html

模板变量列表

代码生成器的模板示例


答案 2

我首先要感谢@Viktor贝尔特的回答。虽然答案提供了方向,但它没有提供足够的解决方案。请注意对上述答案的更改和补充。

在构造函数签名中,更改是从 {{datatype}} 到 {{{datatypeWithEnum}}}。此更改将支持使用泛型的任何属性,例如 List。

第二种是包含参数对局部变量的赋值。

当这些更改直接或覆盖pojo.mustache时,结果是生成可用的构造函数。这适用于 swagger 和 openapi 生成器。

public {{classname}}( {{#vars}} {{{datatypeWithEnum}}} {{baseName}}{{^-last}},{{/-last}} {{#-last}}){
  {{#vars}}
  this.{{baseName}} = {{baseName}};
  {{/vars}}
}{{/-last}}{{/vars}}

参考:将构造函数添加到 openapi codegen 生成的代码中


推荐