SpringBoot解决swagger-ui/index.html访问报错404

本文介绍了解决SpringBoot项目中使用Swagger3.0时访问swagger-ui/index.html页面出现404错误的方法。通过重新指定静态资源路径,可以成功解决此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SpringBoot解决swagger-ui/index.html访问报错404

最近在做一个项目,采用swagger3.0,项目启动起来后,访问swagger路径:http://localhost:8880/vdmpess-web/swagger-ui/index.html报404,原因是 WebMvcConfig 继承了 WebMvcConfigurationSupport,继承该类之后,则在配置文件在中配置的相关内容会失效,需要重新指定静态资源
需要重新指定swagger静态资源。

项目中swagger地址

在这里插入图片描述

解决方法

添加指定静态资源的地址

@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.
                addResourceHandler("/swagger-ui/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/")
                .resourceChain(false);
    }
}

<think>好的,我现在需要解决用户的问题:在Spring Boot项目中使用springdoc时,出现swagger-ui/index.html404错误。用户之前可能尝试过配置但没成功,需要找到解决方案。 首先,我应该回忆springdoc和Swagger UI的基本配置。springdoc是替代Springfox的库,支持OpenAPI 3。用户可能没有正确添加依赖或者配置有误。根据引用[3],之前用Springfox需要添加springfox-swagger2的依赖,但现在用springdoc的话,应该换成springdoc-openapi-starter-webmvc-ui。 检查依赖是否正确。用户可能还在使用旧的Springfox依赖,或者没有包含springdoc的UI模块。正确的Maven依赖应该是: ```xml <dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> <version>2.1.0</version> </dependency> ``` 如果版本过旧也可能导致问题,需要确认最新版本。然后,检查配置类是否有误。springdoc不需要像Springfox那样用@EnableSwagger2,但可能需要配置OpenAPI的Bean。例如: ```java @Configuration public class OpenApiConfig { @Bean public OpenAPI customOpenAPI() { return new OpenAPI().info(new Info().title("API Docs")); } } ``` 另外,查看应用配置文件,确保没有禁用MVC自动配置,或者静态资源路径被修改。Spring Boot默认会处理静态资源,但如果有自定义的WebMvcConfigurer,可能会影响Swagger UI的路径。引用[2]中提到修改了启动类的注解,可能需要检查是否有其他配置冲突,比如排除数据源自动配置,但应该不影响静态资源。 还有,检查应用的上下文路径。如果设置了server.servlet.context-path,Swagger UI的路径会变成{context-path}/swagger-ui.html。但根据springdoc的文档,访问路径应该是/swagger-ui.html,或者/v3/api-docs。用户可能访问了错误的URL,比如旧版的/swagger-ui/index.html,而正确的应该是/swagger-ui.html。 另外,安全配置可能拦截了Swagger的端点。如果项目用了Spring Security,需要允许访问相关路径: ```java @Configuration @EnableWebSecurity public class SecurityConfig { @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http.authorizeRequests(auth -> auth .antMatchers("/swagger-ui/**", "/v3/api-docs/**").permitAll() .anyRequest().authenticated()); return http.build(); } } ``` 还有可能是缓存问题,清理后重启应用。或者版本不兼容,检查Spring Bootspringdoc的版本是否匹配。例如,Spring Boot 3.x需要springdoc 2.x版本。 总结可能的解决步骤:1. 确认依赖正确;2. 检查配置类和Bean;3. 确认访问URL正确;4. 处理安全配置;5. 检查静态资源路径;6. 版本兼容性。</think>### Spring Boot集成springdoc后swagger-ui/index.html 404问题解决方案 #### 1. 检查基础依赖配置 确保正确引入了`springdoc-openapi-starter-webmvc-ui`依赖(Spring Boot 2.x或3.x通用): ```xml <dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> <version>2.1.0</version> </dependency> ``` 如果使用Spring Boot 3.x,需要验证Java 17+环境[^4]。 #### 2. 确认访问路径正确 springdoc默认提供两个访问端点: - API文档端点:`http://localhost:8080/v3/api-docs` - UI界面端点:`http://localhost:8080/swagger-ui.html` 旧版路径`/swagger-ui/index.html`已不再适用。若配置了`server.servlet.context-path=/api`,则路径变为`/api/swagger-ui.html`[^5]。 #### 3. 检查安全配置 如果集成Spring Security,需放行相关端点: ```java http.authorizeRequests(auth -> auth .antMatchers("/swagger-ui/**", "/v3/api-docs/**").permitAll() ); ``` #### 4. 验证自动配置 通过查看启动日志确认端点注册: ```log o.s.b.a.w.s.WelcomePageHandlerMapping : Adding welcome page: class path resource [META-INF/resources/swagger-ui.html] ``` #### 5. 自定义路径配置(可选) 可在`application.properties`中修改默认路径: ```properties springdoc.swagger-ui.path=/custom-swagger ``` #### 6. 排除静态资源拦截 若使用自定义Web配置,需添加静态资源路径: ```java @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/swagger-ui/**") .addResourceLocations("classpath:/META-INF/resources/webjars/springdoc-openapi-ui/"); } } ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值