当前位置: 首页 > news >正文

swagger访问不了的解决方案 http://localhost:8080/swagger-ui/index.html

确保增加 swagger 依赖

pom.xml

    <!-- Swagger --><dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-starter-webmvc-ui</artifactId><version>2.5.0</version></dependency>

在浏览器打开:http://localhost:8080/swagger-ui/index.html,出现空白页

再点击刷新,显示该网页无法正常远行

控制台上输出 401 状态

根据浏览器控制台的错误信息 "Failed to load resource: the server responded with a status of 401 ()",这表明您的请求被服务器拒绝,原因是身份验证失败 (401 Unauthorized)

路径被拦截或安全配置

  • 安全框架拦截:若项目使用了 Spring Security,需放行 Swagger 相关路径:

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers("/swagger-ui/**", "/v3/api-docs/**").permitAll() // 放行路径.anyRequest().authenticated();}
}
  • 检查过滤器/拦截器:自定义过滤器或拦截器可能阻止访问,需排除 Swagger 路径。

原来项目中的拦截器:

WebConfig.java

package com.weiyu.config;import com.weiyu.interceptors.LoginInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;/*** Spring MVC 配置类*/
@Configuration
public class WebConfig implements WebMvcConfigurer {@Autowiredprivate LoginInterceptor loginInterceptor;/*** 增加拦截器,将拦截器添加到 Spring MVC** @param registry 拦截器对象*/@Overridepublic void addInterceptors(InterceptorRegistry registry) {// 增加登录拦截器,默认拦截所有的请求registry.addInterceptor(loginInterceptor)// 请求白名单,不拦截的请求.excludePathPatterns(// 登录接口"/account/login",// 注册接口"/user/register");}
}

将 swagger 增加进白名单

package com.weiyu.config;import com.weiyu.interceptors.LoginInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;/*** Spring MVC 配置类*/
@Configuration
public class WebConfig implements WebMvcConfigurer {@Autowiredprivate LoginInterceptor loginInterceptor;/*** 增加拦截器,将拦截器添加到 Spring MVC** @param registry 拦截器对象*/@Overridepublic void addInterceptors(InterceptorRegistry registry) {// 增加登录拦截器,默认拦截所有的请求registry.addInterceptor(loginInterceptor)// 请求白名单,不拦截的请求.excludePathPatterns(// 登录接口"/account/login",// 注册接口"/user/register",// Swagger"/swagger-ui/**","/swagger-resources/**","/v3/api-docs/**","/webjars/**","/swagger-ui.html");}
}

重启应用,访问效果:

如果你无法访问 http://localhost:8080/swagger-ui.html,可能是以下原因导致的。请按步骤排查:


1. 服务未运行或端口错误

  • 检查服务是否启动:确保你的 Spring Boot 应用已成功启动(查看控制台日志,确认无报错)。

  • 验证端口:检查应用是否运行在 8080 端口(默认端口)。若端口被修改(如 application.properties 中设置 server.port=9090),需访问 http://localhost:9090/swagger-ui.html


2. Swagger 依赖未正确配置

  • 确认依赖:确保项目中已添加 Swagger 依赖(根据版本选择):

    • Springdoc (OpenAPI 3)(推荐):

      xml

      复制

      下载

      运行

      <dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-starter-webmvc-ui</artifactId><version>2.5.0</version> <!-- 检查最新版本 -->
      </dependency>
    • Springfox (Swagger 2)(旧版):

      xml

      复制

      下载

      运行

      <dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</version>
      </dependency>
  • 清理构建:更新依赖后执行 mvn clean install 或 gradle clean build


3. 路径被拦截或安全配置

  • 安全框架拦截:若项目使用了 Spring Security,需放行 Swagger 相关路径:

    java

    复制

    下载

    @Configuration
    public class SecurityConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers("/swagger-ui/**", "/v3/api-docs/**").permitAll() // 放行路径.anyRequest().authenticated();}
    }
  • 检查过滤器:自定义过滤器或拦截器可能阻止访问,需排除 Swagger 路径。


4. 上下文路径(Context Path)

  • 若设置了 server.servlet.context-path(如 server.servlet.context-path=/api),Swagger 的路径会变为:

    text

    复制

    下载

    http://localhost:8080/api/swagger-ui.html

5. 访问备用路径

  • Springdoc 的备用路径

    • http://localhost:8080/swagger-ui/index.html

    • http://localhost:8080/swagger-ui/

  • Springfox 的路径

    • http://localhost:8080/swagger-ui/(注意结尾斜杠)


6. 检查 Swagger 配置类

  • Springfox 需要配置类(旧版):

    java

    复制

    下载

    @Configuration
    @EnableSwagger2
    public class SwaggerConfig {@Beanpublic Docket api() {return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.any()).paths(PathSelectors.any()).build();}
    }
  • Springdoc 无需配置(默认启用)。


7. 浏览器缓存或代理问题

  • 清除缓存:使用 Ctrl + Shift + R(Windows)或 Cmd + Shift + R(Mac)强制刷新页面。

  • 关闭代理:浏览器代理或 VPN 可能导致 localhost 访问异常。


8. 验证 API 文档 JSON 是否生成

访问以下路径,确认是否返回 JSON:

  • Springdoc: http://localhost:8080/v3/api-docs

  • Springfox: http://localhost:8080/v2/api-docs

若返回 JSON,则 Swagger 已生效,问题在 UI 路径;若未返回,检查依赖和配置。


9. 其他可能原因

  • 端口冲突:其他程序占用了 8080 端口(通过 netstat -ano | findstr :8080 检查并终止进程)。

  • 防火墙限制:确保防火墙允许 8080 端口的本地访问。

  • 项目未编译:代码修改后未重新编译,导致 Swagger 未生成。


快速测试步骤

  1. 启动应用,观察日志是否显示 Swagger 初始化信息。

  2. 直接访问 http://localhost:8080/v3/api-docs(Springdoc)或 http://localhost:8080/v2/api-docs(Springfox)。

  3. 若返回 JSON,尝试访问 http://localhost:8080/swagger-ui/index.html

通过以上排查,通常可解决 Swagger 无法访问的问题。

http://www.lqws.cn/news/542305.html

相关文章:

  • 可编辑37页PPT | 数字化转型咨询规划方案
  • Mysql Mybatis批量插入和批量更新数据
  • 设计模式 | 适配器模式
  • LaTeX下载与实践入门指南
  • 在 Dev Container 中实现 GUI 开发的解决方案
  • 报表控件stimulsoft教程:在报表、仪表板和 PDF 表单自动生成缩略图
  • SQL Server 中 GO 的作用
  • mPaaS 客户端诊断概述
  • CSS3实现同心圆效果
  • Go 语言中的 package 和 go modules
  • (二)YOLOV12部署训练
  • 人工智能-基础篇-1-人工智能介绍(发展史,技术体系,技术基础,主要领域,前景和挑战)
  • macOS,切换 space 失效,向右切换space(move right a space) 失效
  • Django导入错误:`from django.conf.urls import url` 的终极解决方案
  • 【机器学习深度学习】线性回归(基本模型训练流程)
  • 【AS32系列MCU调试教程】SPI调试的常见问题解析
  • 【AI助手】释放双手,基于Cursor Agent与Playwright MCP的浏览器自动化实战
  • Windows家庭版安装docker
  • 【Pandas】pandas DataFrame last_valid_index
  • 校企协同育人,智慧养老实训基地助力人才就业无忧
  • 【中文核心期刊推荐】《计算机工程与科学 》
  • MST56XXB/MST5650B/MST5033B 是一款耐高压的LDO芯片,针对中控设备,给MCU供电,60V的耐压,150mA
  • elastic-ai.creator开源程序是设计、训练和生成专门针对 FPGA 优化的神经网络
  • react-sequence-diagram时序图组件
  • 飞算科技依托 JavaAI 核心技术,打造企业级智能开发全场景方案
  • 【数据结构】B树的介绍及其实现C++
  • 带标签的 Docker 镜像打包为 tar 文件
  • React Native 如何实现拉起App
  • PHP在做爬虫时的解决方案
  • Franka 机器人在配置空间距离场实验中的突破性应用:从算法优化到动态场景适配