SpringBoot項(xiàng)目實(shí)戰(zhàn)(二十三篇):整合Swagger2構(gòu)建強(qiáng)大的Restful Api接口文檔(二)

作者:方雷
個(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)各種奇葩的問題琳骡, 讓我們很頭疼变屁。

image.png

二勤讽,踩坑小記

接下來我就分享一個(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

image.png

那么問題出現(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就可以訪問成功


image.png

三悬而,總結(jié)

我不如地獄誰(shuí)入地獄。大家有沒有覺得如果api接口文檔中包含大量的接口文檔锭汛, 而且一直是上下滾動(dòng)笨奠,不方便查看和翻閱。所以下一篇后續(xù)會(huì)介紹基于swagger左右布局的swagger-ui框架唤殴。

參考資料

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末般婆,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子朵逝,更是在濱河造成了極大的恐慌蔚袍,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件配名,死亡現(xiàn)場(chǎng)離奇詭異啤咽,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)渠脉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門宇整,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人芋膘,你說我怎么就攤上這事鳞青∩矗” “怎么了?”我有些...
    開封第一講書人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵盼玄,是天一觀的道長(zhǎng)贴彼。 經(jīng)常有香客問我,道長(zhǎng)埃儿,這世上最難降的妖魔是什么器仗? 我笑而不...
    開封第一講書人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮童番,結(jié)果婚禮上精钮,老公的妹妹穿的比我還像新娘。我一直安慰自己剃斧,他們只是感情好轨香,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著幼东,像睡著了一般臂容。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上根蟹,一...
    開封第一講書人閱讀 51,718評(píng)論 1 305
  • 那天脓杉,我揣著相機(jī)與錄音,去河邊找鬼简逮。 笑死球散,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的散庶。 我是一名探鬼主播蕉堰,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼悲龟!你這毒婦竟也來了屋讶?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤躲舌,失蹤者是張志新(化名)和其女友劉穎丑婿,沒想到半個(gè)月后性雄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體没卸,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年秒旋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了约计。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡迁筛,死狀恐怖煤蚌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤尉桩,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布筒占,位于F島的核電站,受9級(jí)特大地震影響蜘犁,放射性物質(zhì)發(fā)生泄漏翰苫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一这橙、第九天 我趴在偏房一處隱蔽的房頂上張望奏窑。 院中可真熱鬧,春花似錦屈扎、人聲如沸埃唯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)墨叛。三九已至,卻和暖如春模蜡,著一層夾襖步出監(jiān)牢的瞬間巍实,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工哩牍, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留棚潦,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓膝昆,卻偏偏與公主長(zhǎng)得像丸边,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子荚孵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容