Swagger-Codegen: как объединить все файлы в один файл для создания кода клиента
Я только что начал с Swagger и NodeJS. Я смог реализовать Swagger для моего приложения NodeExpress, а также смог сгенерировать typescript -клиент-код с помощью Swagger-Codegen (Typescript - Angular).
Одной из проблем, с которой я столкнулся, является сгенерированный код, поэтому он разложил много разных файлов. Я надеялся, что он выводит только один файл api.ts
и содержит все от вызовов API и интерфейсов/моделей.
Я искал способ решить эту проблему, потому что трудно читать и поддерживать сгенерированный клиентский код по мере роста бэкэндса.
Любые предложения или указатели будут высоко оценены.
Счастливый праздник! Спасибо вам
EDIT: Я искал ответы на это в течение нескольких дней и до сих пор не нашел их. В настоящее время я работаю над проектом с ядром ASP.NET, и у них есть NSwag
, который делает то, что я хочу достичь с помощью Node Swagger
.
Ответы
Ответ 1
TL; DR
Вы можете скомпилировать все файлы в один файл *.ts
, как показано на этом сообщении.
Непрерывный интеграционный подход
Генератор кода Swagger упрощает обслуживание, потому что он позволяет думать в терминах непрерывной интеграции.
Вы не должны беспокоиться о просмотре кода или эстетике (потому что это код, сгенерированный машиной), но о:
- Управление версиями API
- Подписи функций, методов и классов
- Документация
Если вы работаете с системой CI, такой как Jenkins или Ansible, вы можете автоматически развернуть библиотеку в частную учетную запись NPM (для JS и TS) или сервер Maven (для Java и Kotlin).
![Частный Maven]()
Сохранение обновленного номера версии пакета позволит IDE правильно запросить пользователя об обновлениях API.
![введите описание изображения здесь]()
Ответ 2
Swagger использует шаблоны Mustache для генерации кода. Для упрощения
вы можете просто создать копию одного из встроенных шаблонов и
измените это.
Затем вы можете использовать свой модифицированный шаблон следующим образом:
swagger-codegen-cli generate -t path/to/template/dir/ -i spec.json
Структура каталога вывода, однако, не может быть изменена с использованием шаблонов
в одиночестве. Для этого вам понадобится собственный модуль codegen. Вы можете создать свой
собственный или изменить один из встроенных.