【问题标题】:Update code generated by Swagger code-gen更新 Swagger code-gen 生成的代码
【发布时间】:2018-06-01 20:01:33
【问题描述】:

我已经在 spring 中使用 swagger code-gen 从 swagger.yaml 文件中生成了代码。

现在我已经为我的 API 更新了 swagger.yaml 文件并添加了更多的 HTTP 操作。

是否可以在不手动合并的情况下自动更新之前生成的现有代码?

【问题讨论】:

    标签: spring-boot swagger-ui swagger-codegen


    【解决方案1】:

    我猜你说的是由 codegen 生成的控制器,然后你已经实现了。它们在每一代之后都会被覆盖,这意味着您每次都必须手动合并代码以添加更改......这真的很烦人

    我能找到的最佳工作流程是使用interfaceOnly 选项仅在目标目录中生成模型和接口类,然后手动创建实现这些接口的控制器。

    假设您使用另一个 GET 操作更新您的 API 规范文件,使用该新操作重新生成接口,您只需调整您的控制器以实现该新方法(使用现代 IDE 超级快速和简单),一切否则保持不变,你可以更好地控制你的代码(在不同的文件夹中拆分控制器......等等......)。

    这是我用于插件的配置:

    <plugin>
        <groupId>io.swagger</groupId>
        <artifactId>swagger-codegen-maven-plugin</artifactId>
        <version>2.2.3</version>
        <executions>
            <execution>
                <goals>
                    <goal>generate</goal>
                </goals>
                <configuration>
                    <inputSpec>./api-contract/petstore.yml</inputSpec>
                    <language>spring</language>
                    <configOptions>
                        <sourceFolder>swagger</sourceFolder>
                        <java8>true</java8>
                        <interfaceOnly>true</interfaceOnly>
                    </configOptions>
                </configuration>
            </execution>
        </executions>
    </plugin>
    

    您可以使用带有 swagger-codegen-maven-plugin here 的 Spring Boot 检查完整的示例项目。

    干杯

    【讨论】:

    • 你拯救了我的一天 :)
    【解决方案2】:

    遇到同样的问题,我通过应用 git 找到了解决方案

    1. 提交当前状态
    2. 运行生成器
    3. 使用 git 暂存预期的更改,但不要暂存手动编辑的撤销
    4. 提交并继续

    我只是从这种方法开始,但它似乎至少适用于 php-slim,其中在重新生成时只更改了一个文件 (index.php)。

    【讨论】:

    • 使用 git 你最好 rebase,将新生成的代码放在你开始编码更改的地方
    猜你喜欢
    • 2016-07-08
    • 2018-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-10
    • 2022-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多