Build swagger-ui 来自 open-api.yml

Build swagger-ui from open-api.yml

我正在尝试从 Open-API 规范生成接口,并且我有一个 Gradle 插件:

implementation(
    "org.springdoc:springdoc-openapi-ui:1.5.12",
    "org.openapitools:openapi-generator-gradle-plugin:5.3.0"
)

def apiFile = "$rootDir/src/main/resources/openapi/api.yml"

task buildOpenApi(type: GenerateTask) {
    generatorName = "spring"
    inputSpec = apiFile
    outputDir = "$buildDir/generated"
    groupId = "$project.group"
    id = "$project.name-java-client"
    version = "$project.version"
    apiPackage = "com.example.my.api"
    modelPackage = "com.example.my.model"
    configOptions = [
            interfaceOnly: "true",
            openApiNullable: "false",
            skipDefaultInterface: "true"
    ]
    globalProperties = [
            apis: "",
            models: ""
    ]
    enablePostProcessFile = true
    skipOverwrite = false
}

compileJava.dependsOn(buildOpenApi)
sourceSets.main.java.srcDirs = ['build/generated/src','src/main/java']

并且有一个 api.yml 文件位于 src/main/resources/openapi/api.yml。当我 运行 ./gradlew clean compileJava 时,它会为我生成构建目录的正确接口,因此我可以实现它们。但是当我启动我的应用程序并转到 http://localhost:8080/swagger-ui.html 时,我看到 swagger 自动从我的控制器 类 生成,而不是从 api.yml 文件生成 - 我的意思是,它没有任何描述,示例等等

如何从我的 api.yml 文件而不是控制器源代码构建 swagger?

正确的方法是不要期望实现接口的 swagger,而是从 api.yml 文件构建它。 application.yml 中的这个配置帮助了我:

springdoc:
  api-docs:
    enabled: false
    path: /api-docs
  swagger-ui:
    disable-swagger-default-url: true
    url: /api.yml
    path: /api-docs

现在可以在 localhost:8080/api-docs

购买 swagger