Swagger簡介

swagger

了解更多

一、簡介

Swagger是一種REST APIs的簡單但強大的表示方式叫倍,標(biāo)準(zhǔn)的偷卧,語言無關(guān),這種表示方式不但人可讀吆倦,而且機器可讀听诸。可以作為REST APIs的交互式文檔蚕泽,也可以作為REST APIs的形式化的接口描述晌梨,生成客戶端和服務(wù)端的代碼。
docs : swagger docs


二须妻、為什么選擇Swagger
  1. 使用Swagger UI生成的界面比Javadoc生成的界面美觀
  2. swagger可以實時同步API文檔(代碼修改后仔蝌,文檔同步修改)
  3. swagger解析速度快,效率高(使用輕量級數(shù)據(jù)交換格式JSON)
  4. 對現(xiàn)有SpringMVC工程支持友好
  5. Swagger可以充當(dāng)前后端交流的重要橋梁荒吏,方便快捷敛惊。很實用。
  6. Swagger項目允許你生產(chǎn)司倚,顯示和消費你自己的RESTful服務(wù)豆混。不需要代理和第三方服務(wù)。是一個依賴自由的資源集合动知,它能通過Swagger API動態(tài)的生成漂亮的文檔和沙盒,因為Swagger UI沒有依賴皿伺,你可以把他部署到任何服務(wù)器環(huán)境或者是你自己的機器。

三盒粮、如何使用Swagger

3.1Swagger UI簡介

Swagger UI是Swagger中用于顯示Rest接口文檔的項目鸵鸥,項目由一組HTML,JavaScript和CSS組成,沒有外部依賴妒穴。Swagger UI可以根據(jù)Swagger Spec的json動態(tài)生成漂亮的幫助文檔宋税。支持常見瀏覽器。
(Swagger Spec是Swagger用于描述REST APIs的語言讼油,可用json/yaml表示)
了解更多

1杰赛、支持API自動生成同步的在線文檔,這些文檔可用于項目內(nèi)部API審核方便測試人員了解API
2矮台、這些文檔可作為客戶產(chǎn)品文檔的一部分進行發(fā)布
3乏屯、支持API規(guī)范生成代碼,生成的客戶端和服務(wù)器端骨架代碼可以加速開發(fā)和測試速度

3.2開發(fā)步驟

參考

①添加依賴

      <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>${swagger.version}</version>
      </dependency>
      <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>${swagger.version}</version>
      </dependency>

其中swagger.version自由控制

②寫Java配置類

@PropertySource("classpath:swagger.properties")
@Configuration
@EnableSwagger2
public class SwaggerConfig {                                    
    @Bean
    public Docket api() { 
        return new Docket(DocumentationType.SWAGGER_2)  
          .select()                                  
          .apis(RequestHandlerSelectors.any())              
          .paths(PathSelectors.any())                          
          .build();                                           
    }
}
注解/方法 說明
@PropertySource 重寫Swagger訪問路徑瘦赫,默認(rèn)的是/v2/api-docs
@Configuration 將這個類注入到Spring中并視作配置類
@EnableSwagger2 使Swagger2在工程中可用
swagger.preoperties springfox.documentation.swagger.v2.path=/my/api-docs
DocumentationType.SWAGGER_2 默認(rèn)final類型辰晕,自帶屬性name=swagger version=2.0
select() 返回一個ApiSelectorBuilder的實例,提供一種控制Swagger發(fā)布的方式
apis() 解析范圍控制确虱,例如.apis(RequestHandlerSelectors.basePackage("com.example.controller"))
paths() 解析路徑控制含友,通過any(),none(),regex(),或者ant()來控制,例如path(PathSelectors.ant("/foos/*"))
build() 生成Docket對象

③集成Swagger UI到工程中

1.從github上下載swagger-ui的zip包
2.復(fù)制dist文件夾下的內(nèi)容到webapp目錄下
3.修改index.xml的預(yù)訪問地址為自定義的


4.修改web.xml文件中過濾器的匹配路徑為/
5.因為swagger-ui項目都是靜態(tài)資源校辩,restful形式的攔截方法會將靜態(tài)資源進行攔截處理窘问,所以在springmvc配置文件中需要配置對靜態(tài)文件的處理方式。
<mvc:default-servlet-handler/>

此舉是為了體驗最新版的swagger-ui召川,并且可以高度自定義內(nèi)容南缓,其實在springfox-swagger-ui中已經(jīng)集成了大多數(shù)資源胸遇,如html頁面和js文件等荧呐,當(dāng)存在注解@EnableSwagger2時,就可以使用http://ip:host/swagger-ui.html查看接口文檔

3.3注解說明

Javadocs for annotations with the current release are here
本文只簡單介紹常用的部分注解及其屬性

注解名 常用屬性 使用描述
@Api description纸镊、basepath倍阐、position已過時(deprecated)
String[] tags 描述類,可以對該資源(控制器類)下的操作(函數(shù))進行分類,列表中每個tag為一類
String value 描述類逗威,會被tags覆蓋峰搪,1.5版本后推薦使用tags
String produces 描述內(nèi)容類型,如application/json, application/xml
boolean hidden 是否隱藏資源下的操作
使一個類成為Swagger資源凯旭,一般標(biāo)在控制器上概耻,與@Controller同級
@ApiOperation String value required 簡單描述此操作
boolean hidden 是否隱藏此操作
String nickName 相當(dāng)于 operationId
Class<?> response 返回類型
String notes 描述信息
標(biāo)在操作上
@ApiParam String name 參數(shù)名,如果不寫會從地址中找/field/method/parameter name
String value 簡明描述
String required 是否必須
標(biāo)在操作中的參數(shù)上
@ApiModel String value 實體類名字描述罐呼,默認(rèn)為類名
String description 簡單描述實體類
Class<?> parent 提供一個父類鞠柄,以便于描述繼承
標(biāo)在實體類上,描述實體類的信息嫉柴,如果不標(biāo)厌杜,但是在操作中用到了相關(guān)實體類,該實體類會被自動標(biāo)注,屬性信息為默認(rèn)描述
@ApiModelProperty String value 簡明描述
String name 名字
String allowableValues 允許的值夯尽,兩種寫法瞧壮,枚舉式: {first,second,third} ,區(qū)間式:range[1,5],可開可閉匙握,無窮用infinity表示
String dataType 數(shù)據(jù)類型咆槽,可以是類名或者簡單類型,會覆蓋掉讀取到的類型
boolean required 參數(shù)是否必須
boolean readOnly 是否只讀
String example 舉例子
boolean allowEmptyValue 允許空值
標(biāo)在實體類的屬性上
@ApiImplicitParam 類似ApiParam 用于使用Servlet或者無JAX-RS環(huán)境時圈纺,或者@ApiParam被占用罗晕,可以手動聲明單個參數(shù)
@ApiResponse int code HTTP狀態(tài)碼,required
String message 關(guān)于此狀態(tài)碼的相關(guān)描述赠堵,required
標(biāo)在操作上小渊,但是推薦用@ApiOperation來描述返回信息

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市茫叭,隨后出現(xiàn)的幾起案子酬屉,更是在濱河造成了極大的恐慌,老刑警劉巖揍愁,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件呐萨,死亡現(xiàn)場離奇詭異,居然都是意外死亡莽囤,警方通過查閱死者的電腦和手機谬擦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來朽缎,“玉大人惨远,你說我怎么就攤上這事』靶ぃ” “怎么了北秽?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長最筒。 經(jīng)常有香客問我贺氓,道長,這世上最難降的妖魔是什么床蜘? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任辙培,我火速辦了婚禮,結(jié)果婚禮上邢锯,老公的妹妹穿的比我還像新娘扬蕊。我一直安慰自己,他們只是感情好弹囚,可當(dāng)我...
    茶點故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布厨相。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蛮穿。 梳的紋絲不亂的頭發(fā)上庶骄,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天,我揣著相機與錄音践磅,去河邊找鬼单刁。 笑死,一個胖子當(dāng)著我的面吹牛府适,可吹牛的內(nèi)容都是我干的羔飞。 我是一名探鬼主播,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼檐春,長吁一口氣:“原來是場噩夢啊……” “哼逻淌!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起疟暖,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤卡儒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后俐巴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體骨望,經(jīng)...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年欣舵,在試婚紗的時候發(fā)現(xiàn)自己被綠了擎鸠。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡缘圈,死狀恐怖劣光,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情准验,我是刑警寧澤赎线,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布廷没,位于F島的核電站糊饱,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏颠黎。R本人自食惡果不足惜另锋,卻給世界環(huán)境...
    茶點故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望狭归。 院中可真熱鬧夭坪,春花似錦、人聲如沸过椎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至亡鼠,卻和暖如春赏殃,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背间涵。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工仁热, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人勾哩。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓抗蠢,卻偏偏與公主長得像,于是被迫代替她去往敵國和親思劳。 傳聞我的和親對象是個殘疾皇子迅矛,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,860評論 2 361

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

  • Swagger 是一款RESTFUL接口的文檔在線自動生成+功能測試功能軟件。本文簡單介紹了在項目中集成swagg...
    GhostStories閱讀 2,666評論 2 13
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,323評論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理潜叛,服務(wù)發(fā)現(xiàn)诬乞,斷路器,智...
    卡卡羅2017閱讀 134,715評論 18 139
  • swagger是一個工具钠导,用于自動生成web網(wǎng)站對外提供的服務(wù)接口文檔震嫉,并且以web頁面的形式進行展示。 那么我們...
    李燦輝閱讀 743評論 0 0
  • 落葉 牡属, 從緊密的簇?fù)砩⒙洌?無聲凌亂票堵。 脈搏, 無聲無息的死寂逮栅, 從容堵住呼吸悴势。 臉色, 從嫩綠病入膏肓 到枯黃...
    羅子閱讀 692評論 70 108