如何避免openapi-generator覆盖Python-Flask已实现的控制器?
OpenAPI Generator Python-Flask 控制器生成问题解决方案
1. 是否可以跳过未更新的控制器,仅生成新增的?
OpenAPI Generator 本身没有原生支持“仅生成新增控制器”的功能——它基于完整的 OpenAPI 规格文件生成代码,不会追踪哪些控制器是之前已生成且未修改的。不过可以通过以下变通方法实现类似效果:
- 拆分规格文件:把新增的 API 单独提取到临时 YAML 文件中,仅针对这个文件运行生成命令,之后手动将新增的控制器代码合并到现有项目。注意要保证临时文件中的组件(如数据模型)与主规格文件一致,避免生成重复或冲突的代码。
- 自定义生成模板:修改 Python-Flask 生成器的 Mustache 模板,在控制器生成逻辑中加入判断:如果目标文件已存在,且文件内容包含手动修改的标记(比如去掉默认的
# AUTO-GENERATED注释),就跳过生成。这种方法需要熟悉 OpenAPI Generator 的模板语法,但灵活性最高。
2. 跳过控制器文件生成的更优方案
除了使用 .openapi-generator-ignore 忽略目录,还有以下更精准的方法:
- 使用
--skip-overwrite参数:执行命令时加上该参数,工具会跳过所有已存在的文件,不会覆盖任何已生成或手动修改的内容。但注意,这会跳过所有已存在的文件(包括模型、配置等),如果需要更新其他部分代码,此方法不适用。 - 通过
--global-property直接跳过控制器生成:运行命令时添加--global-property skipController=true,完整命令如下:
这个参数会从生成逻辑层面跳过所有控制器文件,只生成模型、路由配置、依赖文件等其他必要代码,比忽略目录更精准。openapi-generator generate -i OpenAPI/api.yaml -g python-flask --skip-validate-spec --global-property skipController=true - 使用配置文件:创建
config.yaml文件,写入以下内容:
然后用skipController: true-c参数加载配置:
适合需要复用配置的场景,效果和openapi-generator generate -i OpenAPI/api.yaml -g python-flask --skip-validate-spec -c config.yaml--global-property一致。
内容的提问来源于stack exchange,提问作者Bilal Ahmed
相关产品推荐
相关产品推荐

