【问题标题】:openapi code generator - python server stub workflowopenapi 代码生成器 - python 服务器存根工作流程
【发布时间】:2019-08-30 22:57:14
【问题描述】:

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

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

我使用的是 openapi-generator 3.3.4 版。

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

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

【问题讨论】:

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


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

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

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

        我的工作流程:

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

        现在它运作良好:)。希望对您有所帮助。

        【讨论】:

          猜你喜欢
          • 2020-02-17
          • 1970-01-01
          • 1970-01-01
          • 2020-05-06
          • 2020-09-02
          • 2013-03-29
          • 1970-01-01
          • 1970-01-01
          • 2021-05-26
          相关资源
          最近更新 更多