我有一个依赖于 springdoc-openapi 的 spring boot 应用程序(2.5.6)。 但是,启动 swagger-ui (http://localhost:8080/v1/swagger-ui/index.html) 不起作用。 调试日志表明index.html 不存在。 找不到index.html可能是什么原因?
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>1.6.8</version>
</dependency>
application.yaml
springdoc:
swagger-ui:
tagsSorter: alpha
operations-sorter: alpha
doc-expansion: none
disable-swagger-default-url: true
logging:
level:
root: DEBUG
server:
port: 8080
spring:
application:
name: fe-applic-app
api-version: "v1"
我找到了问题的原因。 application.yaml 中未设置上下文路径。
http://localhost:8080/v1/swagger-ui/index.html
添加 servlet : context-path 后,渲染出 swagger-ui
server:
port: 8080
servlet:
context-path: "/${spring.application.api-version}"
尝试使用
swagger-ui.html
而不是 swagger-ui/index.html
。在 60% 的情况下,swagger-ui.html
会重定向到其真实位置。
http://localhost:8080/v1/swagger-ui.html http://localhost:8080/v3/swagger-ui.html
将其添加到您的配置中:
@Configuration
public class WebAppConfig extends WebMvcConfigurationSupport
{
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry)
{
registry.addResourceHandler("/swagger-ui/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/swagger-ui/4.14.3/");
}
如果您使用 spring 3 的开放 API。它会给出 404 错误。因此使用 springdoc-openapi-starter-webmvc-ui 依赖项。
例如
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.1.0</version>
</dependency>