openapi代码生成器-python服务器存根工作流程

时间:2019-04-09 15:29:46

标签: python flask-sqlalchemy openapi openapi-generator connexion

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

如果我能执行规范并拥有递增的工作流程,那将是很好的。

我正在使用openapi-generator版本3.3.4。

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

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

4 个答案:

答案 0 :(得分:0)

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

尽管如此,您必须自己手动创建这些文件

答案 1 :(得分:0)

  

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

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

答案 2 :(得分:0)

我找到的最佳解决方案,效果很好

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

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

我的工作流程:

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

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

答案 3 :(得分:0)

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

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

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

有了这个系统,我的 openapi-generator 可以在每次运行时覆盖 openapi_server/controller 目录,最后我仍然以调用我需要的实现和任何其他调整的状态结束这些文件我想要的已经申请了。