Генератор кода openapi - рабочий процесс заглушки сервера Python

Я использую openapi-generator для генерации кода Python-заглушки сервера. Все работает нормально, однако каждый раз, когда я вношу изменения в спецификации OpenAPI (файл yaml), генератор кода перезаписывает весь код, даже настроенный (контроллер). Я хотел бы разработать инкрементный рабочий процесс, при котором, если я внесу изменение в спецификации, генератор изменяет код, обрабатывая только эту часть кода.

Было бы здорово, если бы я добрался до точки, где я мог бы обеспечить соблюдение спецификаций, а также иметь инкрементный рабочий процесс.

Я использую openapi-generator версии 3.3.4.

Я попытался изменить контроллер и удалить # noqa: E501, но он по-прежнему перезаписывает код каждый раз, когда я генерирую заглушку из спецификаций.

Как я могу изолировать реализацию контроллера с помощью сгенерированного интерфейса, поскольку сгенерированный код не является ООП?


person Ionut Manolache    schedule 09.04.2019    source источник
comment
Выпущена v4.1.3 (twitter.com/oas_generator/status/1180123829626003456). Пожалуйста, обновите до последней стабильной версии.   -  person William Cheng    schedule 17.10.2019


Ответы (4)


Простой обходной путь - добавить openapi_server/controllers в .openapi-generator-ignore файл, чтобы они не перезаписывались каждый раз, когда вы обновляете свой контракт API.

Однако вам придется вручную создать эти файлы самостоятельно.

person davidlj95    schedule 16.10.2019

Я попытался изменить контроллер и удалить # noqa: E501, но он по-прежнему перезаписывает код каждый раз, когда я генерирую заглушку из спецификаций.

Вы можете использовать настраиваемые шаблоны с опцией -t.

person William Cheng    schedule 17.10.2019

Лучшее решение, которое я нашел, работает отлично

Используйте две ветки: одну с необработанной заглушкой сервера, другую с заглушкой сервера, заполненной вашим кодом.

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

Мой рабочий процесс:

Каждый раз, когда мне нужно изменить заглушку сервера, я проверяю исходную ветвь заглушки сервера = ›затем изменяю файл openAPi =› затем создаю заглушку сервера = ›затем фиксирую =› затем проверяю ветвь разработки = › затем слейте ветку-заглушку raw сервера с моей веткой dev.

Пока работает хорошо :). Надеюсь, это поможет.

person Gus tutu    schedule 09.02.2020

Чтобы решить эту проблему, я поместил свои реализации конечных точек в файлы в модуле openapi_server/implementation/, а затем внедрил систему исправлений в свой процесс сборки.

Я создаю заглушку сервера, а затем применяю исправление к заглушкам конечной точки сервера в openapi_server/controller.

Патч включает добавление различных операций импорта к функциям реализации конечной точки, заменяет строки return 'do some magic!' вызовами их реализаций конечных точек и даже удаляет комментарии # noqa: E501, где они мне не нужны.

С этой системой мой openapi-generator может перезаписывать каталог openapi_server/controller каждый раз, когда он запускается, и, в конце концов, я все еще получаю эти файлы в состоянии, которое вызывает нужные мне реализации, и любые другие настройки, которые я хотел, были применены.

person Clayton Mills    schedule 18.06.2021