OpenAPI代码生成器 - Python服务器存根工作流程

4
我正在使用openapi-generator生成服务器存根python代码。一切都很顺利,但是每次我在OpenAPI规范(yaml文件)中进行更改时,代码生成器都会覆盖整个代码,甚至是自定义的控制器。我想开发一个增量工作流,在其中如果我在规范中进行更改,则生成器仅修改处理该部分代码的代码。
如果我能够实施规范并具有增量工作流程,那将是非常好的。
我正在使用openapi-generator版本3.3.4。
我尝试修改控制器并删除#noqa:E501,但每次我从规范生成存根时它仍然会覆盖代码。
由于生成的代码不是面向对象的,所以我该如何通过生成的接口隔离控制器实现?

v4.1.3(https://twitter.com/oas_generator/status/1180123829626003456)已发布。请升级到最新的稳定版本。 - William Cheng
4个回答

2

我找到的最佳解决方案,完美地运作了

使用两个分支:一个带有原始服务器存根,另一个带有填充您代码的服务器存根。

仅在原始分支上生成新的服务器存根版本,并将其合并到包含先前填充了您代码的服务器存根的其他分支中。

我的工作流程:

每次我需要修改服务器存根时,我都会检出原始服务器存根分支 => 然后修改openAPI文件 => 然后生成服务器存根 => 然后提交 => 然后检出dev分支 => 然后将原始服务器存根分支合并到我的dev分支中。

目前它运行良好 :)。希望能对你有所帮助。


2
为了解决这个问题,我将终端点实现放入openapi_server/implementation/模块中的文件中,然后在构建过程中实现了一个修补程序。我生成服务器存根,然后在openapi_server/controller中应用补丁到服务器终端点存根中。补丁包括向终端点实现函数添加各种导入,将return 'do some magic!'行替换为对它们的终端点实现的调用,甚至删除我不想要的# noqa: E501注释。有了这个系统,我的OpenAPI生成器可以在每次运行时覆盖openapi_server/controller目录,并最终以调用所需实现的状态保留这些文件,并应用任何其他必要的微调。

0

一个简单的解决方法是在 .openapi-generator-ignore 文件中添加 openapi_server/controllers,这样每次更新 API 合同时它们不会被覆盖。

虽然如此,你仍需要手动创建这些文件。


0
我尝试修改控制器并删除 # noqa: E501,但每次从规范生成存根时它仍会覆盖代码。
您可能希望使用 -t 选项的自定义模板。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接