接入knife4j-openapi3访问/doc.html页面空白问题

在这里插入图片描述

大概率拦截器拦截下来了,我们F12看网络请求进行排查

在这里插入图片描述

都是 /webjars/ 路径下的资源被拦截了,只需在拦截器中添加该白名单即可"/webjars/**" 具体配置如下:

@Configuration
public class WebConfig implements WebMvcConfigurer {
    private final LoginInterceptor loginInterceptor;

    public WebConfig(LoginInterceptor loginInterceptor) {
        this.loginInterceptor = loginInterceptor;
    }

    // 拦截器
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 向拦截器注册表(InterceptorRegistry)中添加了一个拦截器 (loginInterceptor)
        registry.addInterceptor(loginInterceptor)
                // 指定接口不拦截
                .excludePathPatterns(
                        "/swagger-ui/**",
                        "/v3/api-docs/**",
                        "/doc.html",
                        "/webjars/**"
                );
    }
}

在这里插入图片描述

### 解决 Knife4j OpenAPI3 Jakarta Spring Boot Starter 无法访问 `doc.html` 的问题 当集成 `knife4j-openapi3-jakarta-spring-boot-starter` 并尝试访问 `doc.html` 页面遇到问题时,通常涉及以下几个方面: #### 1. 正确引入依赖 确保项目的 Maven 或 Gradle 文件中已正确添加所需依赖项。对于 Maven 用户来说,应该有如下配置[^1]: ```xml <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId> <version>4.5.0</version> </dependency> ``` #### 2. 资源路径配置 如果Spring Boot应用未能自动识别到静态资源,则需显式指定其位置。可以在application.yml或properties文件里加入以下设置来帮助框架找到必要的前端文件[^2]: ```yaml spring: mvc: static-path-pattern: /static/** server: servlet: context-path: / ``` #### 3. 处理 StackOverflowError 异常 针对某些情况下可能出现的栈溢出错误(StackOverflowError),这可能是由于OpenAPI文档解析过程中存在循环引用或其他复杂结构引起的。可以通过调整JVM参数增加堆大小或者优化代码逻辑减少递归深度等方式缓解此现象[^3]: - 增加 JVM 启动参数 `-Xss512k`, 提高线程栈空间; - 审查实体类定义,避免不必要的双向关联。 #### 4. 检查 API 文档扫描范围 确认应用程序上下文中确实包含了待暴露给Swagger UI展示的服务接口,并通过适当的方式开启API文档自动生成功能。一般而言,在主程序入口处加上@EnableKnife4j注解即可实现这一点: ```java @SpringBootApplication @EnableKnife4j public class Application { } ``` 以上措施有助于解决大多数场景下因缺少必要配置而导致的`doc.html`页面加载失败的情况。当然,具体原因还需结合实际开发环境进一步排查分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值