Spring Boot學(xué)習(xí):如何使用Swagger文檔構(gòu)建自己的API文檔

Swagger

隨著前后端分離架構(gòu)和微服務(wù)架構(gòu)的流行油狂,我們使用Spring Boot來構(gòu)建RESTful API項(xiàng)目的場景越來越多,在多人協(xié)作的團(tuán)隊(duì)中企锌,前后端的溝通成本往往比較大榆浓。在這樣的背景下,Swagger出現(xiàn)了(當(dāng)然還有其他的就不一一例舉了)撕攒。

使用 Swagger 集成文檔具有以下幾個(gè)優(yōu)勢:

  • 功能豐富 :支持多種注解陡鹃,自動(dòng)生成接口文檔界面,支持在界面測試API接口功能
  • 及時(shí)更新 :開發(fā)過程中花一點(diǎn)寫注釋的時(shí)間抖坪,就可以及時(shí)的更新API文檔萍鲸,省心省力
  • 整合簡單 :通過添加pom依賴和簡單配置,內(nèi)嵌于應(yīng)用中就可同時(shí)發(fā)布API接口文檔界面擦俐,不需要部署獨(dú)立服務(wù)

開始整合Swagger2

在上一篇的項(xiàng)目基礎(chǔ)上猿推,我們來使用一下Swagger。

  1. 首先捌肴,我們需要在pom.xml中添加依賴,如下:
<!-- swagger蹬叭、swagger-ui 依賴 -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>
  1. 接下來我們來編寫一個(gè)SwaggerConfig配置類
    新建一個(gè)包:com.zhlab.demo.config,創(chuàng)建SwaggerConfig類
    SwaggerConfig.java
package com.zhlab.demo.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 * @ClassName SwaggerConfig
 * @Description //SwaggerConfig配置類
 * @Author singleZhang
 * @Email 405780096@qq.com
 * @Date 2020/10/17 0017 上午 11:11
 **/
@Configuration
@EnableSwagger2
public class SwaggerConfig {


    @Bean
    public Docket creatRestApi(){
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(this.apiInfo())
                .select()
                //掃描指定路徑
                .apis(RequestHandlerSelectors.basePackage("com.zhlab.demo.controller"))
                // 掃描所有有注解的api,用這種方式更靈活
                //.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
                // 掃描所有
                // .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo(){
        return new ApiInfoBuilder()
                .title("zhLab Demo Api Doc")
                .description("api document of zhLab Demo")
                .version("1.0.1")
                .build();
    }

}

※說明:

  • 在類上状知,添加 @EnableSwagger2 注解秽五, 標(biāo)記項(xiàng)目啟用 Swagger API 接口文檔。
  • 通過 createRestApi() 方法饥悴,創(chuàng)建 Swagger Docket Bean
  • 更多的配置可以在Docket.java坦喘、ApiInfo.java兩個(gè)類的源碼中查看
  1. 修改上一篇中的HelloController控制器
package com.zhlab.demo.controller;

import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;

/**
 * @ClassName HelloController
 * @Description //第一個(gè)Springboot接口
 * @Author singleZhang
 * @Email 405780096@qq.com
 * @Date 2020/10/16 0016 上午 10:55
 **/
@RestController
@RequestMapping("/system/user")
public class HelloController {

    /* 方法注解 */
    @ApiOperation(value = "方法名:打招呼", notes = "打招呼方法的測試")
    @GetMapping("/hello")
    public String sayHello(/* 參數(shù)注解 */ @ApiParam(value = "參數(shù):名字" , required=true ) @RequestParam String name){
        return "hi"+name+" ,I can say hello";
    }
}

啟動(dòng)項(xiàng)目,在瀏覽器輸入http://localhost:8080/swagger-ui.html顯示下圖:

swagger-ui

執(zhí)行一下盲再,測試一下接口:
TEST

常用注解說明

swagger 通過注解接口生成文檔,包括接口名瓣铣,請求方法答朋,參數(shù),返回信息等棠笑。
@Api: 修飾整個(gè)類梦碗,用于controller類上
@ApiOperation: 描述一個(gè)接口,用戶controller方法上
@ApiParam: 單個(gè)參數(shù)描述
@ApiModel: 用來對象接收參數(shù),即返回對象
@ApiModelProperty: 對象接收參數(shù)時(shí)蓖救,描述對象的字段
@ApiResponse: Http響應(yīng)其中的描述洪规,在ApiResonse中
@ApiResponses: Http響應(yīng)所有的描述,用在
@ApiIgnore: 忽略這個(gè)API
@ApiError: 發(fā)生錯(cuò)誤的返回信息
@ApiImplicitParam: 一個(gè)請求參數(shù)
@ApiImplicitParam: 多個(gè)請求參數(shù)

總結(jié)

以上就是對Swagger的初步體驗(yàn),前后端分離api文檔是節(jié)省溝通成本的重要工具循捺,用好它斩例,你肯定會如虎添翼,以后還會推薦YAPI等工具从橘。

項(xiàng)目地址

https://gitee.com/kaixinshow/springboot-note

返回【Spring Boot學(xué)習(xí)】目錄

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末念赶,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子恰力,更是在濱河造成了極大的恐慌晶乔,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件牺勾,死亡現(xiàn)場離奇詭異正罢,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)驻民,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進(jìn)店門翻具,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人回还,你說我怎么就攤上這事裆泳。” “怎么了柠硕?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵工禾,是天一觀的道長。 經(jīng)常有香客問我蝗柔,道長闻葵,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任癣丧,我火速辦了婚禮槽畔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘胁编。我一直安慰自己厢钧,他們只是感情好鳞尔,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著早直,像睡著了一般寥假。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上霞扬,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天糕韧,我揣著相機(jī)與錄音,去河邊找鬼祥得。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蒋得,可吹牛的內(nèi)容都是我干的级及。 我是一名探鬼主播,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼额衙,長吁一口氣:“原來是場噩夢啊……” “哼饮焦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起窍侧,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤县踢,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后伟件,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體硼啤,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年斧账,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了谴返。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,673評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡咧织,死狀恐怖嗓袱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情习绢,我是刑警寧澤渠抹,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站闪萄,受9級特大地震影響梧却,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜败去,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一篮幢、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧为迈,春花似錦三椿、人聲如沸缺菌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽伴郁。三九已至,卻和暖如春蛋叼,著一層夾襖步出監(jiān)牢的瞬間焊傅,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工狈涮, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留狐胎,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓歌馍,卻偏偏與公主長得像握巢,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子松却,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評論 2 349