作者:方雷
個(gè)人博客:http://blog.chargingbunk.cn/
微信公眾號(hào):rayson_666(Rayson開發(fā)分享)
個(gè)人專研技術(shù)方向:
- 微服務(wù)方向:springboot, springCloud, Dubbo
- 分布式/高并發(fā): 分布式鎖闺鲸, 消息隊(duì)列RabbitMQ
- 大數(shù)據(jù)處理: Hadoop, spark, HBase等
- python方向: python web開發(fā)
喜歡的朋友們可以關(guān)注我的簡(jiǎn)書或微信公眾號(hào)(rayson_666), 一起交流學(xué)習(xí)跷究, 后期會(huì)不斷更新有經(jīng)驗(yàn)的干貨.
一,前言
承接上一篇SpringBoot項(xiàng)目實(shí)戰(zhàn)(二十三篇):整合Swagger2構(gòu)建強(qiáng)大的Restful Api接口文檔(一)整合Swagger搭建步驟還是很簡(jiǎn)單炼彪,但是往往再真實(shí)的環(huán)境中總會(huì)出現(xiàn)各種奇葩的問題琳骡, 讓我們很頭疼变屁。
二勤讽,踩坑小記
接下來我就分享一個(gè)出現(xiàn)問題的場(chǎng)景铲敛,并分析其背后造成的原因是什么。
出現(xiàn)如下問題:
訪問swagger-ui.html始終出現(xiàn)找不到頁(yè)面
如果僅僅是按照上一篇來搭建的話籽孙, 是很成功的烈评,不會(huì)出現(xiàn)任何問題。那么我還是復(fù)現(xiàn)一下問題場(chǎng)景犯建,看大家是否有出現(xiàn)跟我一樣的場(chǎng)景讲冠。
復(fù)現(xiàn)一下問題場(chǎng)景:
1. 新建WebConfig配置類
package cn.rayson.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
/**
* 該類再項(xiàng)目中的作用可以添加攔截器, 以及跨域配置, 而且可以說在項(xiàng)目中不可缺少,占有很重要的地位
*
* @author 方雷(Rayson)
* @微信公眾號(hào): rayson_666(Rayson開發(fā)分享) 适瓦、
* 分享springBoot springCloud技術(shù), 以及python,大數(shù)據(jù)學(xué)習(xí)系列
* @個(gè)人博客: http://blog.chargingbunk.cn/
* @簡(jiǎn)書: http://www.reibang.com/u/5b0de5c8dc56
* 2018年6月9日
*/
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
/**
* 此方法是用來注冊(cè)跨域的
*/
@Override
public void addCorsMappings(CorsRegistry registry) {
// TODO Auto-generated method stub
super.addCorsMappings(registry);
}
/**
* 此方法是用來注冊(cè)攔截器的
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
// TODO Auto-generated method stub
super.addInterceptors(registry);
}
/**
* 此方法是用來添加靜態(tài)資源映射的
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
// TODO Auto-generated method stub
super.addResourceHandlers(registry);
}
}
如上代碼就是我創(chuàng)建好的WebConfig配置類竿开, 并繼承WebMvcConfigurerAdapter, @EnableWebMvc 用于啟用Spring MVC的犹菇。
然后直接啟動(dòng)項(xiàng)目德迹,然后我們來訪問一下http://localhost:8080/swagger-ui.html,結(jié)果出現(xiàn)了Whitelabel Error Page
那么問題出現(xiàn)了揭芍, 我們接下來就分享下解決方案胳搞。
2.分析問題原因及解決方案
問題的原因:
如果繼承了WebMvcConfigurationSupport,則在yml中配置的相關(guān)內(nèi)容會(huì)失效称杨。 需要重新指定靜態(tài)資源
解決方案:
/**
* 此方法是用來添加靜態(tài)資源映射的
* 發(fā)現(xiàn)如果繼承了WebMvcConfigurationSupport肌毅,則在yml中配置的相關(guān)內(nèi)容會(huì)失效。 需要重新指定靜態(tài)資源
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**").addResourceLocations(
"classpath:/static/");
registry.addResourceHandler("swagger-ui.html").addResourceLocations(
"classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**").addResourceLocations(
"classpath:/META-INF/resources/webjars/");
super.addResourceHandlers(registry);
}
配置好了過后姑原, 重新訪問swagger-ui.html就可以訪問成功
三悬而,總結(jié)
我不如地獄誰(shuí)入地獄。大家有沒有覺得如果api接口文檔中包含大量的接口文檔锭汛, 而且一直是上下滾動(dòng)笨奠,不方便查看和翻閱。所以下一篇后續(xù)會(huì)介紹基于swagger左右布局的swagger-ui框架唤殴。
參考資料