7

我有一个 Spring Boot Gradle 项目,我想获取它的 OpenAPI 规范 YAML 文件。

据我了解,官方swagger-core不支持 Spring boot 项目,因此我发现springdoc-openapihttps://github.com/springdoc/springdoc-openapi-gradle-plugin)。

似乎为了获取 YAML/JSON 文件,在运行generateOpenApiDocs任务时,springdoc库设置了一个带有一些端点 (/v3/api-docs) 的服务器来下载文件。

  1. 我正在使用默认配置,由于某种原因,我不断收到以下错误:

任务“generateOpenApiDocs”执行失败。无法连接到 http://localhost:8080/v3/api-docs 等待了 30 秒

似乎由于某种原因它没有设置服务器。我该如何解决?

  1. 是否可以跳过服务器部分?我可以将 springdoc 配置为在构建时简单地生成文件吗?
4

3 回答 3

3

如果您使用 spring-boot 部署 REST API,则依赖于 servlet 容器。

OpenAPI 规范所需的元数据仅在运行时由 spring 框架提供,这解释了运行时生成的选择。

您可以在集成测试期间定义任何嵌入式 servlet 容器以生成 OpenAPI 规范。

于 2020-07-02T10:23:57.970 回答
0

发生这种情况是因为有时嵌入式服务器需要一些时间才能启动,并且默认设置为 30 秒。请在您的 openAPI 块中添加以下属性,它会为您正常工作。请参阅以下示例:

openApi {
apiDocsUrl.set("http://localhost:9090/v3/api-docs.yaml")
outputDir.set(file("Your Directory path"))
outputFileName.set("openapi.yaml")
forkProperties.set("-Dserver.port=9090")
waitTimeInSeconds.set(60)
} 
于 2021-09-10T18:22:19.247 回答
0

这就是我解决问题的方式

  • 指定路径
  • 在您的属性文件中输入:
springdoc:
  api-docs:
    path: /{your path}
  • 配置插件
  • 在您的 build.gradle 文件中输入:
openApi {
    apiDocsUrl.set("http://localhost:{your port}/your path)
    
}
于 2020-11-06T12:29:28.503 回答