如何解决Apache Camel Spring Boot中Swagger UI 404问题?
解决Apache Camel Spring Boot中Swagger UI 404问题
1. 补全Swagger UI依赖
官方rest-openapi-springdoc示例可能未包含Swagger UI的starter依赖,这是导致404的常见原因。在你的构建文件中添加对应依赖:
Maven(pom.xml)
<dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> <!-- 版本需与springdoc核心依赖匹配,比如用2.2.0适配Spring Boot 3+Java17 --> <version>2.2.0</version> </dependency>
Gradle(build.gradle)
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0'
2. 配置Swagger UI访问路径(按需)
如果你的应用设置了自定义上下文路径(比如server.servlet.context-path=/my-api),需要在application.properties或application.yml中显式指定Swagger UI的路径:
application.properties
springdoc.swagger-ui.path=/swagger-ui.html
application.yml
springdoc: swagger-ui: path: /swagger-ui.html
3. 排除Camel路由对Swagger UI路径的拦截
检查Camel的REST配置,确保/swagger-ui/**和/v3/api-docs/**(OpenAPI文档接口)没有被Camel的路由拦截。在Camel配置类中添加排除规则:
@Configuration public class CamelRestConfig extends RouteBuilder { @Override public void configure() throws Exception { restConfiguration() .component("servlet") .contextPath("/api") // 你的API上下文路径 .apiContextPath("/openapi") // 你的OpenAPI文档路径 // 排除Swagger相关路径,避免被Camel处理 .endpointProperty("excludePatterns", "/swagger-ui/**,/v3/api-docs/**"); } }
4. 确保静态资源可访问
如果自定义了Spring Boot的静态资源配置,需要手动映射Swagger UI的静态文件路径:
@Configuration public class WebMvcConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/swagger-ui/**") .addResourceLocations("classpath:/META-INF/resources/webjars/swagger-ui/"); } }
5. 验证Java 17版本兼容性
确保使用的springdoc-openapi版本支持Java 17,推荐使用2.0.0及以上版本,这类版本已适配Java 17和Spring Boot 3.x环境。
内容的提问来源于stack exchange,提问作者Wisliy
相关产品推荐
相关产品推荐

