如何在Spring Boot中修改Swagger路径,将swagger-ui替换为/docs
解决Spring Boot中Swagger访问路径简化问题
方案一:通过springdoc配置直接修改(推荐)
如果使用的是springdoc-openapi依赖,只需在application.yml中添加以下配置:
springdoc: swagger-ui: path: /docs/index.html disable-swagger-default-url: true
springdoc.swagger-ui.path:指定自定义的Swagger访问路径disable-swagger-default-url: true:禁用默认的Swagger UI路径,避免不必要的重定向
配置完成后,直接访问http://localhost:8080/docs/index.html即可打开Swagger界面,不会再跳转到原路径。
方案二:修复自定义控制器实现
如果想用自定义控制器的方式,需要注意两个核心问题:
- 控制器类必须添加
@Controller注解,否则Spring无法识别并处理请求 - 重定向的目标路径要与当前Swagger UI的实际路径一致(即
/swagger-ui/index.html,而非旧版的/swagger-ui.html)
修正后的控制器代码:
import jakarta.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import java.io.IOException; @Controller public class SwaggerController { @GetMapping("/docs/index.html") public void apiDocumentation(HttpServletResponse response) throws IOException { // 重定向到Swagger UI的实际路径 response.sendRedirect("/swagger-ui/index.html"); // 若不想暴露原路径,也可以使用请求转发: // request.getRequestDispatcher("/swagger-ui/index.html").forward(request, response); } }
之前配置无效的原因
- 单独设置
springdoc.swagger-ui-path未搭配disable-swagger-default-url: true,系统仍会重定向到默认路径 - 自定义控制器缺少
@Controller注解,Spring未加载该控制器,请求未被处理
内容的提问来源于stack exchange,提问作者drocky
相关产品推荐
相关产品推荐

