Swagger-Codegen: как объединить все файлы в один для создания клиентского кода

Я только начал работать со Swagger и NodeJS. Я смог реализовать Swagger в моем приложении NodeExpress, а также смог сгенерировать машинный код-клиент с помощью Swagger-Codegen (Typescript-Angular), если быть точным.

Одна из моих проблем заключается в том, что сгенерированный код разбросан по разным файлам. Я надеялся, что он выведет только один файл api.ts, и он будет содержать все, от вызовов API и интерфейсов / моделей.

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

Будем очень признательны за любые предложения или указатели.

Хорошего праздника! Спасибо

РЕДАКТИРОВАТЬ: Я искал ответы на это пару дней, но до сих пор не нашел. В настоящее время я работаю над проектом с ASP.NET Core, и у них есть NSwag, который делает то, чего я хочу достичь с помощью Node Swagger.


person Chau Tran    schedule 25.12.2017    source источник
comment
В настоящее время у меня сгенерирован один файл вместо нескольких файлов - и я бы хотел наоборот, не могли бы вы поделиться своей конфигурацией, чтобы сделать это так, чтобы o / p было несколькими файлами вместо одного? Я попытался использовать его против petStore.json, и он сгенерировал один файл   -  person Jaya    schedule 09.03.2018
comment
@Jaya, прежде чем я отвечу, могу я спросить, находимся ли мы здесь на одной странице? (машинопись-угловой, чванство-кодогенерация 2.3.0)?   -  person Chau Tran    schedule 09.03.2018
comment
Я использую swagger-js-codegen: ^1.12.0, определенный здесь github.com/swagger-api/swagger-codegen # where-is-javascript и typescript для vuejs .. в основном пытается сгенерировать ts models & ts client для api, который предоставляет свой файл swagger.json.   -  person Jaya    schedule 10.03.2018
comment
Используйте Swagger-codegen, чтобы сгенерировать клиентскую заглушку typescript-fetch, и все будет в порядке;)   -  person Chau Tran    schedule 10.03.2018


Ответы (2)


TL; DR

Вы можете скомпилировать все файлы в один *.ts файл, как показано в этом сообщении.

Подход непрерывной интеграции

Генератор кода Swagger упрощает обслуживание, поскольку позволяет мыслить в терминах непрерывной интеграции.

Вам не следует беспокоиться о проверке кода или эстетике (потому что это машинно-сгенерированный код), а о:

  • Управление версиями API
  • Сигнатуры функций, методов и классов
  • Документация

Если вы работаете с системой CI, такой как Jenkins или Ansible, вы можете автоматически развернуть библиотеку в частном Аккаунт NPM (для JS и TS) или Maven server (для Java и Kotlin).

Private Maven

Постоянное обновление номера версии пакета позволит IDE правильно запрашивать у пользователя обновления API.

введите описание изображения здесь

person JP Ventura    schedule 03.01.2018
comment
Спасибо. Хотя я закончил эту консолидацию, этот ответ дает точное решение. - person Chau Tran; 03.01.2018
comment
Для пакетов NPM вы также можете использовать репозитории GitHub, если правильно предоставляете теги управления версиями, как показано на stackoverflow.com/questions/16350673 - person JP Ventura; 03.01.2018

Swagger использует шаблоны Mustache для генерации кода. Для внесения более простых изменений вы можете просто создать копию одного из встроенные шаблоны и измените их.

Затем вы можете использовать измененный шаблон следующим образом:

swagger-codegen-cli generate -t path/to/template/dir/ -i spec.json

Однако структуру выходного каталога нельзя изменить с помощью одних только шаблонов. Для этого вам понадобится специальный модуль кодогенерации. Вы можете создать свой или изменить один из встроенные.

person Ragnis    schedule 27.12.2017