spring-boot 集成 swagger 問題的解決

spring-boot 集成 swaggerhtml

網上有許多關於 spring boot 集成 swagger 的教程。按照教程去作,發現沒法打開接口界面。git

項目由 spring mvc 遷移過來,是一個無界面純 API 的項目。遷移以前就支持 swagger。web

【問題描述】spring

第一個問題是無權限訪問,這個問題好辦,在 shiro 的配置裏,設置bootstrap

  /swagger-ui.html = anon瀏覽器

再次測試仍不行,因而暫時禁用 shiro, 即將mvc

  /** = user --> /** = anonide

此次的錯誤是 404。spring-boot

 

第二個問題是沒法訪問 swagger-ui測試

查看控制檯日誌,發現程序會從 static/ 目錄下找 /swager-ui.html 這個文件,但應用中根本沒有 static/ 目錄。而 swagger-ui.html 這個文件在 springfox-swagger-ui 這個依賴的 jar 包裏。

確定是 spring-boot 處理資源文件的默認行爲不支持從 jar 包里加載資源文件,須要重寫默認的行爲。

增長一個 WebConfig,內容以下:

@EnableWebMvc @Configuration public class WebConfig implements WebMvcConfigurer { private static final String[] CLASSPATH_RESOURCE_LOCATIONS = { "classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/", "classpath*:/META-INF/resources/", }; @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/**") .addResourceLocations(CLASSPATH_RESOURCE_LOCATIONS); } }

關鍵是高亮的部分(其他部分都是默認行爲)。

再次測試,瀏覽器裏輸入  xxxx/swagger-ui.html 界面顯示正常了。

 

第三個問題:與 shiro 兼容

恢復 shiro 的權限校驗功能,即改回 /** = user. 再次打開 xxxx/swagger-ui.html 發現樣式顯示錯誤。

這個緣由是由於 swagger-ui 這個 jar 包裏除了 swagger-ui.html 還有資源文件。資源文件被禁用了。所以須要在 shiro 配置文件裏添加如下規則:

/webjars*/** = anon

 

【使用新的界面】

上面集成的是默認界面,不太好用,網上找到了另外一篇文章,使用了比較好的界面。可參照下面的連接進行配置:

https://gitee.com/xiaoym/swagger-bootstrap-ui

相關文章
相關標籤/搜索