Как сгенерировать конструкторы в коде swagger?
Codegen не сгенерировал никакого конструктора. Я ссылался на файл swagger petstore, использовал последний файл jar кодекса swagger.
Но был создан только конструктор по умолчанию.
Он не генерирует конструктор на основе своих полей.
Как включить это?
1 ответ
Если вам действительно нужен конструктор с параметрами, вы можете сделать это, изменив файл (ы) шаблона, заканчивающиеся на.moustache.
шаблоны "включить / использовать / изменить"
Я предполагаю, что вы собираетесь редактировать существующий шаблон и хотите конструктор для каждой модели.
Вот простой пример конструктора внутри файла шаблона модели:
public {{classname}}( {{#vars}} {{datatype}} {{baseName}}{{^-last}},{{/-last}} {{#-last}}){
construct code here
}{{/-last}}{{/vars}}
обратите внимание, что это должно идти между тегами {{#model}} {{/model}}
Для получения дополнительной информации о шаблонах усов обратитесь к
Сначала я хотел бы поблагодарить @Viktor Baert за его ответ. Хотя ответ дал направление, он не дал достаточно для ее решения. Обратите внимание на изменение и дополнение к ответу выше.
Это изменение с {{datatype}} на {{{datatypeWithEnum}}} в сигнатуре конструктора. Это изменение будет поддерживать любые свойства, использующие универсальные шаблоны, например List.
Второй - включение присвоения параметров локальным переменным.
Когда эти изменения применяются к pojo.mustache напрямую или с переопределением, результатом является создание пригодного для использования конструктора. Это работает как с генераторами swagger, так и с openapi.
public {{classname}}( {{#vars}} {{{datatypeWithEnum}}} {{baseName}}{{^-last}},{{/-last}} {{#-last}}){
{{#vars}}
this.{{baseName}} = {{baseName}};
{{/vars}}
}{{/-last}}{{/vars}}
Ссылка:добавить конструкторы в код, сгенерированный openapi codegen