如何正确使用从 swagger 规范生成的服务器存根?
How to properly use the server stubs generated from a swagger specification?
我正在使用 Swagger 2.0 和 swagger-codegen(实际上是 Maven 的 swagger-codegen-plugin)来指定、记录和生成 API,目标语言是 Java。
该项目已设置为构建服务器存根 (JAX-RS) 和文档,Eclipse 可识别项目 buildPath 中生成的代码。
我不确定从这里开始的正确工作流程是什么。 :-/
我认为我不应该修改生成的 类,否则每当我更改 swagger 规范时我的更改都会被覆盖,我希望它会随着我对 [=21= 的更多思考而改变] 随着开发的进行。
那我该怎么办?从生成的 类(哪些?)继承或将它们包含在我自己的 类?
中
我相信您需要更新 Impl
类,例如PetApiServiceImpl.
如果您想在代码重新生成期间跳过某些文件(例如Impl
类),您可以将这些文件添加到.swagger-codegen-ignore.
这里的解决方案有两个步骤。
将 **/*Controller.java 或 **/*Impl.java 添加到 .swagger-codegen-ignore 文件。根据使用的语言,默认实现在 *Controller.java 或 *Impl.java 文件中提供。一旦从生成中排除了默认实现,您就可以在自己的 class 中实现生成的接口。您自己 class 中的代码不会在 mvn clean 上刷新。
.swagger-codegen-ignore 文件本身是一个 auto-generated 文件,因此当您执行 mvn clean 时,无论您在第 1 步中添加什么,都会刷新。为避免这种情况,请将您的 .swagger-codegen-ignore
版本保留在您的资源文件夹中,并将以下插件添加到您的 pom,以便在 Maven 生命周期开始时复制该文件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-resources</id>
<phase>initialize</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/generated/swagger</outputDirectory>
<resources>
<resource>
<directory>${basedir}/src/main/resources</directory>
<includes>
<include>.swagger-codegen-ignore</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
我正在使用 Swagger 2.0 和 swagger-codegen(实际上是 Maven 的 swagger-codegen-plugin)来指定、记录和生成 API,目标语言是 Java。
该项目已设置为构建服务器存根 (JAX-RS) 和文档,Eclipse 可识别项目 buildPath 中生成的代码。
我不确定从这里开始的正确工作流程是什么。 :-/
我认为我不应该修改生成的 类,否则每当我更改 swagger 规范时我的更改都会被覆盖,我希望它会随着我对 [=21= 的更多思考而改变] 随着开发的进行。
那我该怎么办?从生成的 类(哪些?)继承或将它们包含在我自己的 类?
中我相信您需要更新 Impl
类,例如PetApiServiceImpl.
如果您想在代码重新生成期间跳过某些文件(例如Impl
类),您可以将这些文件添加到.swagger-codegen-ignore.
这里的解决方案有两个步骤。
将 **/*Controller.java 或 **/*Impl.java 添加到 .swagger-codegen-ignore 文件。根据使用的语言,默认实现在 *Controller.java 或 *Impl.java 文件中提供。一旦从生成中排除了默认实现,您就可以在自己的 class 中实现生成的接口。您自己 class 中的代码不会在 mvn clean 上刷新。
.swagger-codegen-ignore 文件本身是一个 auto-generated 文件,因此当您执行 mvn clean 时,无论您在第 1 步中添加什么,都会刷新。为避免这种情况,请将您的
.swagger-codegen-ignore
版本保留在您的资源文件夹中,并将以下插件添加到您的 pom,以便在 Maven 生命周期开始时复制该文件:<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <executions> <execution> <id>copy-resources</id> <phase>initialize</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/generated/swagger</outputDirectory> <resources> <resource> <directory>${basedir}/src/main/resources</directory> <includes> <include>.swagger-codegen-ignore</include> </includes> </resource> </resources> </configuration> </execution> </executions> </plugin>