一、前言
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡(jiǎn)單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)、網(wǎng)頁空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、河北網(wǎng)站維護(hù)、網(wǎng)站推廣。讓我們先理一下springfox與swagger的關(guān)系。
swagger是一個(gè)流行的API開發(fā)框架,這個(gè)框架以“開放API聲明”(OpenAPI Specification,OAS)為基礎(chǔ),對(duì)整個(gè)API的開發(fā)周期都提供了相應(yīng)的解決方案,是一個(gè)非常龐大的項(xiàng)目(包括設(shè)計(jì)、編碼和測(cè)試,幾乎支持所有語言)。
OAS本身是一個(gè)API規(guī)范,它用于描述一整套API接口,包括一個(gè)接口是GET還是POST請(qǐng)求啊,有哪些參數(shù)哪些header啊,都會(huì)被包括在這個(gè)文件中。它在設(shè)計(jì)的時(shí)候通常是YAML格式,這種格式書寫起來比較方便,而在網(wǎng)絡(luò)中傳輸時(shí)又會(huì)以json形式居多,因?yàn)閖son的通用性比較強(qiáng)。
由于Spring的流行,Marty Pitt編寫了一個(gè)基于Spring的組件swagger-springmvc,用于將swagger集成到springmvc中來。而springfox則是從這個(gè)組件發(fā)展而來,同時(shí)springfox也是一個(gè)新的項(xiàng)目,本文仍然是使用其中的一個(gè)組件springfox-swagger2。
pringfox-swagger2依然是依賴OSA規(guī)范文檔,也就是一個(gè)描述API的json文件,而這個(gè)組件的功能就是幫助我們自動(dòng)生成這個(gè)json文件,我們會(huì)用到的另外一個(gè)組件springfox-swagger-ui就是將這個(gè)json文件解析出來,用一種更友好的方式呈現(xiàn)出來。
這是入門,我們簡(jiǎn)單地介紹springfox-swagger2的配置,幫助各位順利地實(shí)現(xiàn)使用,文中有很多自己的理解,若有錯(cuò)誤,歡迎批評(píng)指正。
二、配置流程說明
在開始編碼之前,我們先對(duì)配置的流程有個(gè)大致的了解。
在前言中,我們知道,我們的第一個(gè)任務(wù)就是生成一個(gè)滿足OSA規(guī)范的json文件(當(dāng)然,創(chuàng)建一個(gè)spring的項(xiàng)目就不說了)。對(duì)于這個(gè)任務(wù),springfox為我們提供了一個(gè)Docket(摘要的意思)類,我們需要把它做成一個(gè)Bean注入到spring中,顯然,我們需要一個(gè)配置文件,并通過一種方式(顯然它會(huì)是一個(gè)注解)告訴程序,這是一個(gè)Swagger配置文件。
一個(gè)OSA規(guī)范文檔需要許多信息來描述這個(gè)API,springfox允許我們將信息組合成一個(gè)ApiInfo的類,作為構(gòu)造參數(shù)傳給Docket(當(dāng)然也可以不構(gòu)造這個(gè)類,而直接使用null,但是你的這個(gè)API就太low了)。
接下來,我們要寫控制器了,當(dāng)然這不重要,不用springfox你依然要寫控制器,重要的是要告訴springfox,這個(gè)控制器是一個(gè)需要他來收集API信息的控制器,不用說,這依然會(huì)采用注解的方式,同時(shí),我們?yōu)榱藢⑴渲梦募c控制器結(jié)合起來,需要在配置文件中指明在什么位置收集可能是API的控制器的信息。
到這里,生成OSA規(guī)范的json文件的配置就結(jié)束了。雖然生成過程比我敘述的更復(fù)雜,但這些程序都會(huì)幫我們完成,我們可以通過類似http://localhost:8080/demo/v2/api-docs的路徑來查看這個(gè)json文件。這個(gè)v2/api-docs就是springfox默認(rèn)的生成文檔的路徑。
接下來,我們需要將它可視化顯示出來,如果使用swagger-springmvc,我們需要單獨(dú)去下載一個(gè)swagger ui的顯示頁面包,并將其中的路徑改為上面的http://localhost:8080/demo/v2/api-docs,這里你就可以感受到,swagger ui就是在解析一個(gè)json文件了。你依然可以這么做,不過springfox專門提供了一個(gè)springfox-swagger-ui組件,不需要配置,我們只需要引入這個(gè)依賴的組件就可以看到最終的效果了,而這個(gè)路由會(huì)是http://localhost:8080/demo/swagger-ui.html。
三、引入依賴
如果我寫的不錯(cuò),相信看到這里,你就大致了解了springfox swagger2的使用流程了。那么,我們進(jìn)入正式編碼的第一步:引入依賴。
這里我們使用maven引入依賴,大家可以到http://mvnrepository.com上搜索springfox,便可以看到Springfox Swagger2和Springfox Swagger Ui,然后就可以從中獲取最新的資源了。如下:
io.springfox springfox-swagger2 2.7.0 io.springfox springfox-swagger-ui 2.7.0