1

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

如果我能够执行规范并拥有增量工作流程,那就太好了。

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

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

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

4

4 回答 4

2

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

我生成服务器存根,然后将补丁应用到openapi_server/controller.

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

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

于 2021-06-18T04:16:45.490 回答
1

我找到的最佳解决方案,完美运行

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

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

我的工作流程:

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

现在它运作良好:)。希望能帮助到你。

于 2020-02-09T23:34:03.103 回答
0

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

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

于 2019-10-16T16:35:14.467 回答
0

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

您可能希望使用带有该-t选项的自定义模板。

于 2019-10-17T02:51:07.103 回答