当前位置: 首页 > 知识库问答 >
问题:

使用openapi生成器gradle插件仅为Spring Boot生成REST接口

商品
2023-03-14

我试图从我们需要实现的一个招摇过市的文件中生成接口。它是从外部来源提供的。我通常先使用契约,但在java/kotlin中很长一段时间没有这样做。

我已经建立了一个项目,希望尽可能多地控制我的代码。我尝试使用openapi生成器gradle插件kotlin-springspringgenerator来生成接口(导入部分)。

最好是带有Spring相关注释的接口(UrestMaps等),至少是接口。但看起来,生成器还会生成一个小应用程序(带有gradle/maven文件、SpringBootApp、README. md...)。

我没有代码了,但我很确定,上次我这样做的时候,很容易生成接口,但不记得我使用了哪个生成器或插件。

所以我的问题是,我是否错过了什么,或者只是创建接口不再是问题了?大家都想在这里搭脚手架吗?


共有3个答案

叶光华
2023-03-14

如果您使用gradle与build.gradle.kts,您可以使用这个openapi生成器插件任务来生成swagger代码。它做同样的事情作为昂首阔步codemen插件:

plugins {
    id("org.openapi.generator") version "5.1.1"
}

openApiGenerate {
    generatorName.set("spring")
    inputSpec.set("$rootDir/src/main/resources/petstore.yaml")
    outputDir.set("$buildDir/generated/")
    configFile.set("$rootDir/src/main/resources/api-config.json")


    globalProperties.set(mapOf(
        Pair("apis", ""), //no value or comma-separated api names
        Pair("models", ""), //no value or comma-separated api names
    ))
}

从您的招摇过市中的路径生成的apiapi配置。json具有生成器的设置。然后,您需要通过执行以下操作将生成的类添加到源集中:

configure<SourceSetContainer> {
    named("main") {
        java.srcDir("$buildDir/generated/src/main/java")
    }
}

最后,请确保在编译之前生成swagger文件:

tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
    dependsOn("openApiGenerate")
    kotlinOptions.jvmTarget = "11"
}

庄文栋
2023-03-14

我添加了以下属性到我的openApiGenerate任务:

    globalProperties =[
            apis: '',
            models: '',
    ]

这为我解决了问题。

松昱
2023-03-14

我将openapi生成器maven插件与

<plugin>
  <groupId>org.openapitools</groupId>
  <artifactId>openapi-generator-maven-plugin</artifactId>
  <version>5.0.0-beta</version>
  <executions>
    <execution>
      <id>1</id>
      <goals>
        <goal>generate</goal>
      </goals>
      <configuration>
        <inputSpec>openapi.json</inputSpec>
        <generatorName>spring</generatorName>
        <modelPackage>modelPackage</modelPackage>
        <apiPackage>apiPackage</apiPackage>
        <invokerPackage>invokerPackage</invokerPackage>
        <configOptions>
          <sourceFolder>target</sourceFolder>
          <interfaceOnly>true</interfaceOnly>
        </configOptions>
      </configuration>
    </execution>
  </executions>
</plugin>

 类似资料:
  • 我正在使用openapi生成器Gradle插件从openapi模式生成模型文件。在构建中使用这些设置。gradle脚本一切似乎都正常: } 结果类在正确的包中生成: 问题就在这里——我不需要它们在我的源代码中,我只需要它们在编译阶段。我希望它们在构建目录中生成,以将它们与其他逻辑分开。但是,当我将outport-dir更改为"$build dDir/生成". toString()时,会发生这种情况

  • 我正在使用OpenAPI生成器gradle插件和“jaxrs resteasy”生成器,我想知道是否有办法更改输出文件的名称。现在它正在生产ApiApi。java,ApiService。java,ApiException。java等。 有没有办法配置它,这样输出将是MyNameApi.java和MyNameApiService.java? 示例YAML:

  • 我在openapi v.3规范中有一个模型。我使用openapi生成器maven插件为库webclient(spring 5-webflux)生成java客户端。我想发送回客户端文件和http头。生成的代码没有获取响应标头的方法。 为客户端生成的代码不包含提供对响应头访问的代码。例如,如果我使用库resttemplate,则有一个方法public MultiValueMap getResponse

  • 我已经成功地从一个。yaml打开api描述符文件,但正如问题标题中所述,我希望将这些接口的响应类型从ResponseEntity更改为我自己的类型。基本上,接口没有此签名: 对于基本上以这种方式实现的方法: 我希望生成的接口尽可能简单 同样的事情,我自己定义的类,而不是

  • 当使用带有Gradle的OpenAPI生成器时,我希望将性别化的源发送到其他源生成器插件使用的标准目录。类似于Maven生成源的东西。 到目前为止,我还不能这样做,特别是将生成限制为Java源类,而不是整个“原型项目”。 似乎OpenAPI Gradle插件的工作流程与Maven插件的工作流程并不相同。 是否有配置标志来省略所有非java代码的生成,并在“生成的源代码”文件夹(如/out/prod

  • 我从一个openapi规范(3.0.1)设计开始,用openapi生成器maven-plugin(5.1.0)生成代码,然后我使用springdoc-openapi-ui进行Spring引导(2.5.4)。 我需要手动将生成的代码中的大部分注释从io.swagger.annotations.*迁移到io.swagger.v3.oas.annotations.*https://springdoc.o