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

知識改變命運,擼碼使我快樂,你的發跡線還好嗎?

點贊再看,養成習慣

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

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

接口文檔在前后分離的項目中是必不可少的一部分,文檔的編寫一直以來都是一件頭疼的事情,寫程序不寫注釋不寫文檔這幾乎是程序員的通病,Swagger2的產生給廣大的程序員們帶來了曙光,只需要在接口類或者接口的方法上添加注解配置,就可以實現文檔效果,除了可以應用到單體應用,在微服務架構中也是可以使用的,只需要整合zuul就可以實現各個服務的文檔整合。


本文所需ApiBoot相關鏈接:

前言

ApiBoot Swagger內部封裝了Swagger2,只需要一個注解@EnableApiBootSwagger就可以實現集成,使用起來非常簡單。

ApiBoot Swagger提供了一系列的默認配置,比如:文檔標題文檔描述文檔版本號等,如果需要修改文檔的默認配置,只需要在application.yml文件內對應配置參數即可實現自定義,告別了繁瑣的代碼配置,ApiBoot通過自動化配置的方式來實現這一點,可以查看 ApiBootSwaggerAutoConfiguration 配置類源碼了解詳情。

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

可配置參數一覽

ApiBoot Swagger之所以可以只需要一個注解就可以實現Swagger2的集成,其中難免有很多的配置參數在做支持,了解每一個配置參數的作用,我們才能進行心應手的自定義調整。

參數名 默認值 描述
api.boot.swagger.enable true 是否啟用文檔
api.boot.swagger.title ApiBoot快速集成Swagger文檔 文檔標題
api.boot.swagger.description - 文檔描述
api.boot.swagger.base-package SpringBoot默認package,詳見AutoConfigurationPackages 生成文檔的基礎package
api.boot.swagger.version ApiBoot的版本號 文檔版本號
api.boot.swagger.authorization.name 授權名稱
api.boot.swagger.authorization.key-name Authorization 整合Oauth2后AccessToken在Header內的Name


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

創建示例項目

我們先來創建一個SpringBoot應用程序,在項目的pom.xml文件內添加ApiBoot的相關依賴,如下所示:

<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);
    }

}

修改默認配置

ApiBoot Swagger所提供的配置參數都可以在application.yml文件內進行設置或修改默認值,下面是修改了版本號標題的配置:

# ApiBoot相關配置
api:
  boot:
    swagger:
      # 配置文檔標題
      title: 接口文檔
      # 配置文檔版本
      version: v1.0

測試控制器

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

/**
 * 示例控制器
 *
 * @author 恒宇少年
 */
@RestController
@RequestMapping(value = "/user")
@Api(tags = "用戶控制器")
public class UserController {
    /**
     * 示例:
     * 根據用戶名查詢用戶基本信息
     *
     * @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);
    }
    /**
     * 響應實體示例
     */
    @ApiModel
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public static class UserResponse {
        @ApiModelProperty(value = "用戶名")
        private String name;
        @ApiModelProperty(value = "年齡")
        private Integer age;
    }
}

注意:ApiBoot Swagger只是針對Swagger進行了封裝,實現了快速集成,對內部的注解以及配置不做修改。

運行測試

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

image

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

本章并沒有集成OAuth2,在執行在線調試時并不需要配置AccessToken

敲黑板,劃重點

ApiBoot Swagger的實現主要歸功于SpringBoot自定義Starter,根據配置參數進行條件配置控制對象的實例化,通過@Import來導入Swagger所需要的配置類。

代碼示例

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

作者個人 博客
使用開源框架 ApiBoot 助你成為Api接口服務架構師

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,797評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,179評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,628評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,642評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,444評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,948評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,040評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,185評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,717評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,602評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,794評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,316評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,045評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,418評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,671評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,414評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,750評論 2 370

推薦閱讀更多精彩內容