Как сгенерировать конструкторы в коде swagger?

Codegen не сгенерировал никакого конструктора. Я ссылался на файл swagger petstore, использовал последний файл jar кодекса swagger.

Но был создан только конструктор по умолчанию.

Он не генерирует конструктор на основе своих полей.

Как включить это?

1 ответ

Если вам действительно нужен конструктор с параметрами, вы можете сделать это, изменив файл (ы) шаблона, заканчивающиеся на.moustache.

шаблоны "включить / использовать / изменить"

Я предполагаю, что вы собираетесь редактировать существующий шаблон и хотите конструктор для каждой модели.

Вот простой пример конструктора внутри файла шаблона модели:

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

обратите внимание, что это должно идти между тегами {{#model}} {{/model}}

Для получения дополнительной информации о шаблонах усов обратитесь к

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

Список переменных шаблона

примеры шаблонов для codegen

Сначала я хотел бы поблагодарить @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

Другие вопросы по тегам