使用Swagger2作為文檔來描述你的接口信息

知識改變命運调鬓,擼碼使我快樂,你的發(fā)跡線還好嗎酌伊?

點贊再看袖迎,養(yǎng)成習(xí)慣

本篇文章對應(yīng)源碼碼云(Gitee)倉庫

https://gitee.com/minbox-projects/api-boot-chapter,您的Star是給我最大動力

接口文檔在前后分離的項目中是必不可少的一部分腺晾,文檔的編寫一直以來都是一件頭疼的事情燕锥,寫程序不寫注釋不寫文檔這幾乎是程序員的通病悯蝉,Swagger2的產(chǎn)生給廣大的程序員們帶來了曙光归形,只需要在接口類或者接口的方法上添加注解配置,就可以實現(xiàn)文檔效果鼻由,除了可以應(yīng)用到單體應(yīng)用暇榴,在微服務(wù)架構(gòu)中也是可以使用的,只需要整合zuul就可以實現(xiàn)各個服務(wù)的文檔整合蕉世。


本文所需ApiBoot相關(guān)鏈接:

前言

ApiBoot Swagger內(nèi)部封裝了Swagger2蔼紧,只需要一個注解@EnableApiBootSwagger就可以實現(xiàn)集成,使用起來非常簡單狠轻。

ApiBoot Swagger提供了一系列的默認(rèn)配置奸例,比如:文檔標(biāo)題文檔描述向楼、文檔版本號等查吊,如果需要修改文檔的默認(rèn)配置,只需要在application.yml文件內(nèi)對應(yīng)配置參數(shù)即可實現(xiàn)自定義湖蜕,告別了繁瑣的代碼配置逻卖,ApiBoot通過自動化配置的方式來實現(xiàn)這一點,可以查看 ApiBootSwaggerAutoConfiguration 配置類源碼了解詳情昭抒。

ApiBoot Swagger支持在線調(diào)試集成OAuth2的接口评也,只需要在文檔界面通過 "Authorize"按鈕設(shè)置有效的AccessToken即可。

可配置參數(shù)一覽

ApiBoot Swagger之所以可以只需要一個注解就可以實現(xiàn)Swagger2的集成灭返,其中難免有很多的配置參數(shù)在做支持盗迟,了解每一個配置參數(shù)的作用,我們才能進(jìn)行心應(yīng)手的自定義調(diào)整婆殿。

參數(shù)名 默認(rèn)值 描述
api.boot.swagger.enable true 是否啟用文檔
api.boot.swagger.title ApiBoot快速集成Swagger文檔 文檔標(biāo)題
api.boot.swagger.description - 文檔描述
api.boot.swagger.base-package SpringBoot默認(rèn)package诈乒,詳見AutoConfigurationPackages 生成文檔的基礎(chǔ)package
api.boot.swagger.version ApiBoot的版本號 文檔版本號
api.boot.swagger.authorization.name 授權(quán)名稱
api.boot.swagger.authorization.key-name Authorization 整合Oauth2后AccessToken在Header內(nèi)的Name


上面是常用的參數(shù),更多配置參數(shù)詳見官方文檔:http://apiboot.minbox.io/zh-cn/docs/api-boot-swagger.html

創(chuàng)建示例項目

我們先來創(chuàng)建一個SpringBoot應(yīng)用程序婆芦,在項目的pom.xml文件內(nèi)添加ApiBoot的相關(guān)依賴怕磨,如下所示:

<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
  <dependency>
    <groupId>org.minbox.framework</groupId>
    <artifactId>api-boot-starter-swagger</artifactId>
  </dependency>

</dependencies>
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.minbox.framework</groupId>
      <artifactId>api-boot-dependencies</artifactId>
      <version>2.2.1.RELEASE</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

啟用ApiBoot Swagger

通過@EnableApiBootSwagger注解來啟用ApiBoot Swagger喂饥,該注解可以配置在XxxApplication入口類上,也可以配置在被@Configuration注解修飾的配置類上肠鲫。

@SpringBootApplication
@EnableApiBootSwagger
public class ApibootSwaggerDescribeTheInterfaceApplication {

    public static void main(String[] args) {
        SpringApplication.run(ApibootSwaggerDescribeTheInterfaceApplication.class, args);
    }

}

修改默認(rèn)配置

ApiBoot Swagger所提供的配置參數(shù)都可以在application.yml文件內(nèi)進(jìn)行設(shè)置或修改默認(rèn)值员帮,下面是修改了版本號標(biāo)題的配置:

# ApiBoot相關(guān)配置
api:
  boot:
    swagger:
      # 配置文檔標(biāo)題
      title: 接口文檔
      # 配置文檔版本
      version: v1.0

測試控制器

為了方便演示Swagger文檔的強大之處导饲,我們來創(chuàng)建一個測試的控制器捞高,使用Swagger提供的注解來描述測試接口,如下所示:

/**
 * 示例控制器
 *
 * @author 恒宇少年
 */
@RestController
@RequestMapping(value = "/user")
@Api(tags = "用戶控制器")
public class UserController {
    /**
     * 示例:
     * 根據(jù)用戶名查詢用戶基本信息
     *
     * @param name {@link UserResponse#getName()}
     * @return {@link UserResponse}
     */
    @GetMapping(value = "/{name}")
    @ApiOperation(value = "查詢用戶信息", response = UserResponse.class)
    @ApiResponse(code = 200, message = "success", response = UserResponse.class)
    public UserResponse getUser(@PathVariable("name") String name) {
        return new UserResponse(name, 25);
    }
    /**
     * 響應(yīng)實體示例
     */
    @ApiModel
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public static class UserResponse {
        @ApiModelProperty(value = "用戶名")
        private String name;
        @ApiModelProperty(value = "年齡")
        private Integer age;
    }
}

注意:ApiBoot Swagger只是針對Swagger進(jìn)行了封裝渣锦,實現(xiàn)了快速集成硝岗,對內(nèi)部的注解以及配置不做修改。

運行測試

啟動本章項目源碼袋毙,訪問:http://localhost:8080/swagger-ui.html 查看運行效果型檀,如下圖所示:

image

當(dāng)我們點擊 "用戶控制器" 時可以展開該Controller內(nèi)定義的接口列表,每一個接口都提供了 "Try it out"(在線調(diào)試)功能听盖。

本章并沒有集成OAuth2胀溺,在執(zhí)行在線調(diào)試時并不需要配置AccessToken

敲黑板皆看,劃重點

ApiBoot Swagger的實現(xiàn)主要歸功于SpringBoot自定義Starter仓坞,根據(jù)配置參數(shù)進(jìn)行條件配置控制對象的實例化,通過@Import來導(dǎo)入Swagger所需要的配置類腰吟。

代碼示例

如果您喜歡本篇文章請為源碼倉庫點個Star无埃,謝謝!PА录语!
本篇文章示例源碼可以通過以下途徑獲取,目錄為apiboot-swagger-describe-the-interface

作者個人 博客
使用開源框架 ApiBoot 助你成為Api接口服務(wù)架構(gòu)師

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末禾乘,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子虽缕,更是在濱河造成了極大的恐慌始藕,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件氮趋,死亡現(xiàn)場離奇詭異伍派,居然都是意外死亡,警方通過查閱死者的電腦和手機剩胁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進(jìn)店門诉植,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人昵观,你說我怎么就攤上這事晾腔∩嘞。” “怎么了?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵灼擂,是天一觀的道長壁查。 經(jīng)常有香客問我,道長剔应,這世上最難降的妖魔是什么睡腿? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮峻贮,結(jié)果婚禮上席怪,老公的妹妹穿的比我還像新娘。我一直安慰自己纤控,他們只是感情好何恶,可當(dāng)我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著嚼黔,像睡著了一般细层。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上唬涧,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天疫赎,我揣著相機與錄音,去河邊找鬼碎节。 笑死捧搞,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的狮荔。 我是一名探鬼主播胎撇,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼殖氏!你這毒婦竟也來了晚树?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤雅采,失蹤者是張志新(化名)和其女友劉穎爵憎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體婚瓜,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡宝鼓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了巴刻。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片愚铡。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖胡陪,靈堂內(nèi)的尸體忽然破棺而出沥寥,到底是詐尸還是另有隱情碍舍,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布营曼,位于F島的核電站乒验,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蒂阱。R本人自食惡果不足惜锻全,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望录煤。 院中可真熱鬧鳄厌,春花似錦、人聲如沸妈踊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽廊营。三九已至歪泳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間露筒,已是汗流浹背呐伞。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留慎式,地道東北人伶氢。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像瘪吏,于是被迫代替她去往敵國和親癣防。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,976評論 2 355

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