Swagger教程(持續(xù)更新中。于毙。敦冬。)

介紹

領(lǐng)導(dǎo)讓后端的同學(xué)寫一個mock server配合測試,所以一下子想到了Swagger這個東西望众,但是本人沒有用過匪补,所以打算寫一份菜鳥用的Swagger教程。

相信無論是前端還是后端開發(fā)烂翰,都或多或少地被接口文檔折磨過夯缺。前端經(jīng)常抱怨后端給的接口文檔與實(shí)際情況不一致。后端又覺得編寫及維護(hù)接口文檔會耗費(fèi)不少精力甘耿,經(jīng)常來不及更新踊兜。其實(shí)無論是前端調(diào)用后端,還是后端調(diào)用后端佳恬,都期望有一個好的接口文檔捏境。但是這個接口文檔對于程序員來說于游,就跟注釋一樣,經(jīng)常會抱怨別人寫的代碼沒有寫注釋垫言,然而自己寫起代碼起來贰剥,最討厭的,也是寫注釋筷频。所以僅僅只通過強(qiáng)制來規(guī)范大家是不夠的蚌成,隨著時間推移,版本迭代凛捏,接口文檔往往很容易就跟不上代碼了担忧。

Swagger是什么?它能干什么坯癣?
發(fā)現(xiàn)了痛點(diǎn)就要去找解決方案瓶盛。解決方案用的人多了,就成了標(biāo)準(zhǔn)的規(guī)范示罗,這就是Swagger的由來惩猫。通過這套規(guī)范,你只需要按照它的規(guī)范去定義接口及接口相關(guān)的信息鹉勒。再通過Swagger衍生出來的一系列項(xiàng)目和工具帆锋,就可以做到生成各種格式的接口文檔,生成多種語言的客戶端和服務(wù)端的代碼禽额,以及在線接口調(diào)試頁面等等。這樣皮官,如果按照新的開發(fā)模式脯倒,在開發(fā)新版本或者迭代版本的時候常摧,只需要更新Swagger描述文件铛碑,就可以自動生成接口文檔和客戶端服務(wù)端代碼,做到調(diào)用端代碼杨帽、服務(wù)端代碼以及接口文檔的一致性摄乒。

但即便如此悠反,對于許多開發(fā)來說,編寫這個yml或json格式的描述文件馍佑,本身也是有一定負(fù)擔(dān)的工作斋否,特別是在后面持續(xù)迭代開發(fā)的時候,往往會忽略更新這個描述文件拭荤,直接更改代碼茵臭。久而久之,這個描述文件也和實(shí)際項(xiàng)目漸行漸遠(yuǎn)舅世,基于該描述文件生成的接口文檔也失去了參考意義旦委。所以作為Java屆服務(wù)端的大一統(tǒng)框架Spring奇徒,迅速將Swagger規(guī)范納入自身的標(biāo)準(zhǔn),建立了Spring-swagger項(xiàng)目缨硝,后面改成了現(xiàn)在的Springfox摩钙。通過在項(xiàng)目中引入Springfox,可以掃描相關(guān)的代碼查辩,生成該描述文件腺律,進(jìn)而生成與代碼一致的接口文檔和客戶端代碼。這種通過代碼生成接口文檔的形式宜肉,在后面需求持續(xù)迭代的項(xiàng)目中匀钧,顯得尤為重要和高效。

框架說明及使用

現(xiàn)在SWAGGER官網(wǎng)主要提供了幾種開源工具谬返,提供相應(yīng)的功能之斯。可以通過配置甚至是修改源碼以達(dá)到你想要的效果遣铝。

Swagger Codegen: 通過Codegen 可以將描述文件生成html格式和cwiki形式的接口文檔佑刷,同時也能生成多鐘語言的服務(wù)端和客戶端的代碼。支持通過jar包酿炸,docker瘫絮,node等方式在本地化執(zhí)行生成。也可以在后面的Swagger Editor中在線生成填硕。
Swagger UI:提供了一個可視化的UI頁面展示描述文件麦萤。接口的調(diào)用方、測試扁眯、項(xiàng)目經(jīng)理等都可以在該頁面中對相關(guān)接口進(jìn)行查閱和做一些簡單的接口請求壮莹。該項(xiàng)目支持在線導(dǎo)入描述文件和本地部署UI項(xiàng)目。
Swagger Editor: 類似于markendown編輯器的編輯Swagger描述文件的編輯器姻檀,該編輯支持實(shí)時預(yù)覽描述文件的更新效果命满。也提供了在線編輯器和本地部署編輯器兩種方式。
Swagger Inspector: 感覺和postman差不多绣版,是一個可以對接口進(jìn)行測試的在線版的postman胶台。比在Swagger UI里面做接口請求,會返回更多的信息杂抽,也會保存你請求的實(shí)際請求參數(shù)等數(shù)據(jù)诈唬。
Swagger Hub:集成了上面所有項(xiàng)目的各個功能,你可以以項(xiàng)目和版本為單位默怨,將你的描述文件上傳到Swagger Hub中讯榕。在Swagger Hub中可以完成上面項(xiàng)目的所有工作,需要注冊賬號,分免費(fèi)版和收費(fèi)版愚屁。

PS:
Springfox Swagger: Spring 基于swagger規(guī)范济竹,可以將基于SpringMVC和Spring Boot項(xiàng)目的項(xiàng)目代碼,自動生成JSON格式的描述文件霎槐。本身不是屬于Swagger官網(wǎng)提供的送浊,在這里列出來做個說明,方便后面作一個使用的展開丘跌。

Swagger demo 代碼

啟動代碼

@MapperScan(basePackages = "com.liuliu.springboot.swagger2.mapper")
@SpringBootApplication
@EnableSwagger2
public class SpringbootSwagger2Application {
    public static void main(String[] args) {
        SpringApplication.run(SpringbootSwagger2Application.class, args);
    }
}

在瀏覽器中輸入:

自動生成客戶端和服務(wù)端代碼

TODO

文章轉(zhuǎn)載自:
Swagger介紹及使用
SpringBoot整合Swagger2實(shí)現(xiàn)自動生成API(含源碼)
Swagger Codegen高效開發(fā)客戶端對接服務(wù)端代碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末袭景,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子闭树,更是在濱河造成了極大的恐慌耸棒,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件报辱,死亡現(xiàn)場離奇詭異与殃,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)碍现,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門幅疼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人昼接,你說我怎么就攤上這事爽篷。” “怎么了慢睡?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵逐工,是天一觀的道長。 經(jīng)常有香客問我一睁,道長钻弄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任者吁,我火速辦了婚禮,結(jié)果婚禮上饲帅,老公的妹妹穿的比我還像新娘复凳。我一直安慰自己,他們只是感情好灶泵,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布育八。 她就那樣靜靜地躺著,像睡著了一般赦邻。 火紅的嫁衣襯著肌膚如雪髓棋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機(jī)與錄音按声,去河邊找鬼膳犹。 笑死,一個胖子當(dāng)著我的面吹牛签则,可吹牛的內(nèi)容都是我干的须床。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼渐裂,長吁一口氣:“原來是場噩夢啊……” “哼豺旬!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起柒凉,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤族阅,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后膝捞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體坦刀,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年绑警,在試婚紗的時候發(fā)現(xiàn)自己被綠了求泰。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡计盒,死狀恐怖渴频,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情北启,我是刑警寧澤卜朗,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站咕村,受9級特大地震影響场钉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜懈涛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一逛万、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧批钠,春花似錦宇植、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至拷呆,卻和暖如春闲坎,著一層夾襖步出監(jiān)牢的瞬間疫粥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工腰懂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留梗逮,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓悯恍,卻偏偏與公主長得像库糠,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子涮毫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評論 2 355

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