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



我正在使用openapi-generator来生成服务器存根python代码。一切正常,但是,每次我在 OpenAPI 规范(yaml 文件(中进行更改时,代码生成器都会覆盖整个代码,甚至是自定义的代码(控制器(。我想开发一个增量工作流,如果我对规范进行更改,生成器只会修改处理该部分代码的代码。

如果我能达到可以强制执行规范并拥有增量工作流程的地步,那就太好了。

我正在使用 openapi 生成器版本 3.3.4。

我尝试修改控制器并删除# noqa: E501,但每次我从规范生成存根时,它仍然会覆盖代码。

由于生成的代码不是 OOP,如何通过生成的接口隔离控制器实现?

为了解决这个问题,我将端点实现放入openapi_server/implementation/模块中的文件中,然后在构建过程中实现了一个修补系统。

我生成服务器存根,然后在 openapi_server/controller 中对服务器端点存根应用补丁。

该补丁包括向端点实现函数添加各种导入,将 return 'do some magic!'行替换为对其端点实现的调用,甚至删除我不想要的# noqa: E501注释。

有了这个系统,我的 openapi 生成器可以在每次运行时覆盖 openapi_server/controller 目录,最后我仍然以调用我需要的实现的状态结束这些文件,并且我想要的任何其他调整都已应用。

我找到的最佳解决方案,运行良好

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

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

我的工作流程 :

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

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

一个简单的解决方法是在.openapi-generator-ignore文件中添加openapi_server/controllers,以便在每次更新 API 协定时都不会覆盖它们。

不过,您必须自己手动创建这些文件

我尝试修改控制器并删除 # noqa:E501,但每次我从规范生成存根时,它仍然会覆盖代码。

您可能希望将自定义模板与-t选项一起使用。

最新更新