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
英文地址,請注明出處:http://en.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;它們分別對應自增…