我有一个使用gradle的Java/Spring boot应用程序,我最近从jdk8升级到jdk17,并且我将spring boot从2升级到3.1.4。该应用程序升级没有问题,但之前的swagger UI不再起作用。我之前在gradle中使用的依赖是:
implementation 'org.springdoc:springdoc-openapi-ui:1.6.6'
之前访问 swagger 的 URL 是:
www.example.com/api-app/swagger-ui/index.html?configUrl=/api-app/v3/api-docs/swagger-config
并且 swagger 自动选取了使用标签注释定义的其余控制器,如下所示:
@Tag(name = "Rest Controller Name", description = "Description of rest controller functionality.")
我看到升级到 spring boot v3,依赖项更改为:
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2'
应用此依赖项更改后,swagger UI 可以正确加载,但唯一可用的数据是示例“Swagger Petstore”,而我之前的标签注释未正确读取...
我将 app.yml 文件更新为最新的 swagger 属性:
springdoc:
swagger-ui:
enabled: true
config-url: /api-app/v3/api-docs/swagger-config #(Same as previous query string url)
我尝试使用
springdoc.swagger-ui.disable-swagger-default-url: true
禁用示例,但随后 swagger ui 只是空白,标签仍然无法读取。
我认为 swagger 就像添加依赖项一样简单,但即使使用带有 spring boot 3 的新 swagger v2,我的应用程序似乎也无法正确读取。我在这里遵循了从 v1 迁移指南:https://springdoc.org /#从-springdoc-v1迁移
我尝试了许多其他堆栈溢出建议,但没有一个对我有用。对于我所缺少的内容或正确阅读我的标签注释的任何帮助将不胜感激。
我尝试使用 Spring Boot 3 将“org.springdoc:springdoc-openapi-ui”迁移到“org.springdoc:springdoc-openapi-starter-webmvc-ui”,但我的 @Tag 注释都没有正确加载。
我今天早上开始工作,我有一个安全过滤器,允许所有访问“/swagger-ui/index.html”,但“/v3/api-docs”url 在尝试访问时被阻止。
我允许 /v3/ url 进行所有访问,JSON 开始正确返回,之后 swagger UI 开始工作。
因此,对于任何未来的读者,请确保这两个 URL 都允许通过您的安全过滤器。
我允许了所有Swagger和v3相关的URL,但我仍然遇到错误“规范中没有定义操作!”没有列出 API。解决这个问题的方法是将 Controller 类中的注释从 @Controller 切换到 @RestController。