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.pswp.cn/news/912148.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/912148.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在 .NET Core WebAPI 项目中,执行文件(.exe)方式运行并指定端口

✅ 方法一&#xff1a;使用命令行指定端口 .NET Core WebAPI 项目默认使用 Kestrel Web 服务器&#xff0c;你可以通过环境变量或命令行参数来覆盖默认监听地址和端口。 示例命令&#xff1a; MyApi.exe --urls "http://localhost:5001"或者绑定所有主机地址&…

前缀树进阶-经典案例详解

前缀树进阶-经典案例详解 一、前缀树基础内容回顾二、单词搜索建议系统2.1 问题描述2.2 解题思路2.3 Java代码实现2.4 复杂度分析 三、单词编码3.1 问题描述3.2 解题思路3.3 Java代码实现3.4 复杂度分析 四、最长单词4.1 问题描述4.2 解题思路4.3 Java代码实现4.4 复杂度分析 我…

Redis集群实现方式

✅ 一、什么是 Redis 集群&#xff08;Redis Cluster&#xff09; Redis 集群是 Redis 官方在 3.0 版本引入的分布式部署方案&#xff0c;它的目标是解决以下几个问题&#xff1a; 单个 Redis 实例容量有限&#xff08;最多只能使用一个服务器的内存&#xff09; 单点故障&am…

《中国电信运营商骨干网:历史、现状与未来演进》系列 第五篇:新玩家入局——中国广电CBNNET如何构建全国一张网?

专栏引言 在中国电信、联通、移动三足鼎立的骨干网格局中&#xff0c;一位身负特殊使命的“国家队新兵”正加速入场。它就是中国广电。根据2023年发布的《广电网络融合发展战略》&#xff0c;其核心任务是构建一张“新型广电网络”。手握700MHz“黄金频段”和5G牌照&#xff0c…

QT 国际化 翻译 总结

目录 生成TS文件 单纯Qt Creator工程 生成ts文件方式一&#xff1a;creator方式 生成ts文件方式二&#xff1a;命令行方式 vs2019QT工程 CMake工程 生成qm文件 代码 需要先根据ui产生ts文件&#xff0c;再根据ts文件产生qm文件&#xff0c;然后代码加载 生成TS文件 单…

Java 中实现 Excel 导入一些疑难杂症

在 Java 中实现 Excel 导入功能时&#xff0c;除了已讨论的字段映射、类型转换和内存管理外&#xff0c;还需注意以下关键问题&#xff0c;结合常见踩坑点和最佳实践总结如下&#xff1a; ⚙️ 一、文件与格式校验 文件类型与版本兼容性 明确区分 .xls&#xff08;HSSF&#x…

修改Docker-compose使Uptime-Kuma支持IPV6

之前部署了一个Uptime-Kuma用来监控服务的运行&#xff0c;最近&#xff0c;在监控IPV6网络的时候出现了一点问题&#xff0c;Docker不支持IPV6网络&#xff1a; 解决方案&#xff1a; 修改/etc/docker/daemon.json文件 {"experimental": true,"fixed-cidr-v6&…

分布式存储架构的优势

分布式存储架构通过将数据分散存储在多个物理节点上&#xff0c;在性能、可靠性及成本效益方面展现显著优势&#xff0c;具体核心优势如下&#xff1a; 一、‌弹性扩展能力‌ 水平无缝扩容‌ 通过添加节点即可线性扩展存储容量与性能&#xff0c;支持EB级数据规模&#xff0…

【4目全景】基于海思3403平台开发4目360°全景拼接相机方案

此文主要介绍基于海思3403平台通过实时视频采集&拼接&融合&显示实现实时全景空间漫游体验&#xff0c;该模组将4路视频拼接成一幅360全景图&#xff0c;涉及到计算机视觉、计算机图形学、数字视频处理等技术。 基本开发步骤主要包括以下几个方面&#xff1a;4路视频…

element-plus 按钮 展开/隐藏

文章目录 1、小记2、页面3、typescript事件4、测试数据5、样式 1、小记 element-plus中el-table 的 expand,箭头控制子项显示&#xff0c;有点丑。 想实现类似bootstrap &#xff0c;用按钮 展开/隐藏子项的功能 2、页面 <!-- 表内容 --><el-table:data"tabl…

SSE(Server-Sent Events)、WebSocket和Polling的对比

1. 基本概念 协议通信模式协议层数据流向连接方式SSE服务器单向推送基于HTTP/HTTPS服务器→客户端&#xff08;单向&#xff09;持久化TCP连接WebSocket全双工通信独立协议&#xff08;基于TCP&#xff09;服务器↔客户端&#xff08;双向&#xff09;持久化TCP连接&#xff0…

不同类型的微型导轨精度降低速度有何差异?

微型导轨是一种高精度、小体积、轻量化的直线运动导轨系统&#xff0c;广泛应用于各种需要精密直线运动的领域。其精度等级是衡量其性能的重要指标&#xff0c;不同精度等级的导轨适用于不同的应用场景。那么&#xff0c;不同类型的微型导轨精度降低速度有何差异&#xff1f; 滚…

debian挂载新硬盘后不识别怎么办?

在实际服务器部署或本地系统扩容的过程中&#xff0c;为 Debian 系统添加新硬盘是常见操作。无论是物理服务器、云服务器还是虚拟机环境中&#xff0c;当添加一块新硬盘之后&#xff0c;我们的期望很简单——系统应立即识别并支持挂载使用。 但理想归理想&#xff0c;现实却常…

nt!MiFlushSectionInternal函数分析从nt!IoSynchronousPageWrite函数到Ntfs!NtfsFsdWrite函数

第一部分&#xff1a; while (TRUE) { KeClearEvent (&IoEvent); Status IoSynchronousPageWrite (FilePointer, Mdl, (PLARGE_INTEGER)&StartingOffset…

开发Qt程序时,为什么是CMake?

开发Qt程序时&#xff0c;为什么是CMake&#xff1f; 什么是CMake&#xff1f; CMake 是一个跨平台的构建工具&#xff0c;用来管理 C/C 项目的编译过程。它通过读取 CMakeLists.txt 配置文件&#xff0c;自动生成适合不同操作系统和编译器的构建脚本&#xff08;比如 Makefi…

web布局10

Grid 布局指的是 CSS Grid Layout &#xff0c;它和以往 CSS 框架&#xff08;CSS Framework&#xff09;中所说的网格系统&#xff08;Grid System&#xff09;有所不同。至今为止&#xff0c;它是唯一一个具有二维能力的布局系统&#xff0c;即&#xff0c;它是一个基于二维网…

Spring AI 项目实战(十二):Spring Boot +AI + DeepSeek + 百度OCR 公司发票智能处理系统的技术实践(附完整源码)

系列文章 序号文章名称1Spring AI 项目实战(一):Spring AI 核心模块入门2Spring AI 项目实战(二):Spring Boot + AI + DeepSeek 深度实战(附完整源码)3Spring AI 项目实战(三):Spring Boot + AI + DeepSeek 打造智能客服系统(附完整源码)4

【FR801xH】Ubuntu24.04搭建富芮坤FR801xH系列开发环境教程

00. 目录 文章目录 00. 目录01. FR801xH概述02. FR801xH特性03. gcc-arm-none-eabi-10.3-2021.10概述04. gcc-arm-none-eabi-10.3-2021.10下载05. gcc-arm-none-eabi-10.3-2021.10安装06. FR801xH-SDK编译07. 附录 01. FR801xH概述 FR801xH 系列芯片是面向 SOC&#xff08;片上…

Excel学习05

员工排班表 通过之前的学习&#xff0c;目前的我们已经具备了Excel的初步制作能力。接下来将从实际出发制作一个员工排班表。在制作排版表之前&#xff0c;先来看我们要用到的函数。 DATE函数 date函数是Excel中处理日期的核心函数之一&#xff0c;它能够将单独的年、月、日…

黑马JVM解析笔记(五):深入理解Java字节码执行机制

1.从字节码的角度分析i /** * 从字节码角度分析 a 相关题目 */ public class Demo3_2 {public static void main(String[] args) {int a 10;int b a a a--;System.out.println(a);System.out.println(b);} }a 和 a 实际上代表了两个不同的操作&#xff0c;它们分别对应自增…