从Swagger / OpenAPI生成Spring MVC控制器

时间:2016-10-18 09:28:29

标签: java http spring-mvc swagger openapi

有没有办法如何从Swagger / OpenAPI规范生成控制器Spring MVC代码?

我知道Swagger可以从现有的Spring代码生成,但这可能反过来了吗?

2 个答案:

答案 0 :(得分:2)

是的,可以从命令行使用swagger codegen或使用swagger editor

答案 1 :(得分:0)

基本上,您正在寻找生成摇摇欲坠的服务器端代码的方法。如果您想在构建应用程序时生成它,并且正在使用maven,则可以使用以下插件:

<plugin>
<groupId>io.swagger</groupId>
<artifactId>swagger-codegen-maven-plugin</artifactId>
<version>${swagger.codegen.version}</version>
<executions>
  <execution>
    <goals>
      <goal>generate</goal>
    </goals>
    <configuration>
      <inputSpec>${swagger.yaml.file}</inputSpec>
      <language>spring</language>
      <configOptions>
        <sourceFolder>${swagger.generated.sourcepath}</sourceFolder>
        <!-- <interfaceOnly>true</interfaceOnly> -->
        <dateLibrary>java8</dateLibrary>
      </configOptions>
      <typeMappings>
        <typeMapping>OffsetDateTime=Instant</typeMapping>
      </typeMappings>
      <importMappings>
        <importMapping>java.time.OffsetDateTime=java.time.Instant</importMapping>
      </importMappings>
      <modelPackage>${project.groupId}.${project.artifactId}.swagger.model</modelPackage>
      <apiPackage>${project.groupId}.${project.artifactId}.swagger.api</apiPackage>
      <invokerPackage>${project.groupId}.${project.artifactId}.swagger.invoker</invokerPackage>
    </configuration>
  </execution>
</executions>
</plugin>

请注意,如果将注释的部分interfaceOnly设置为true,它将仅创建默认值为NOT_IMPLEMENTED的API类,而您必须编写实现。

添加以下依赖项:

<dependency>
  <groupId>io.swagger</groupId>
  <artifactId>swagger-annotations</artifactId>
  <version>${swagger.annotations.version}</version>
  <scope>compile</scope>
</dependency>

我使用了以下属性:

<properties>
    <swagger.codegen.version>2.4.1</swagger.codegen.version>
    <swagger.yaml.file>${project.basedir}/swagger.yaml</swagger.yaml.file>
    <swagger.annotations.version>1.5.21</swagger.annotations.version>
    <swagger.generated.sourcepath>src/main/java</swagger.generated.sourcepath>
</properties>

在swagger文件发生更改时,另一种需要手动生成控制器的静态方法是使用swagger editor

enter image description here