SpringBoot2使用swagger2自動生成接口文檔

隨著技術(shù)的不斷發(fā)展辞居,現(xiàn)在開發(fā)的模式大部分都是前后端分離,為了跟前端同事溝通方便寨腔,大部分寫后端的朋友都要寫接口文檔速侈,寫接口文檔確實減少了跟前端同事很多不必要的溝通,但是這樣就真的沒有一點缺點了嗎迫卢?

當接口稍微改動就得馬上更新文檔,然后得馬上給前端發(fā)一份冶共,這樣有時候就會造成文檔更新交流不及時乾蛤,前端接收的文檔就會多,不好管理捅僵。

就算文檔更新及時了家卖、前端也整理好了文檔,也不能直接在線測試接口庙楚,通常都需要第三方插件來測試上荡,例如postman。

但是今天我給大家介紹的swagger2就不需要,它不僅能自動生成接口文檔酪捡,還能在線測試接口是否正常叁征!

廢話不多說,咱們直接進入主題逛薇,今天我們就用springboot2來整合swagger2捺疼,直接帶你們應(yīng)用起來。

先說一下我使用的架構(gòu)和版本信息永罚,springboot版本為2.1.6啤呼,swagger的版本為2.8,數(shù)據(jù)底層使用的是mybatis呢袱,mybatis的版本為1.3.2官扣。

第一步:導入依賴

<!-- 導入swagger2的包-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.8.0</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.8.0</version>
        </dependency>

第二步:配置Swagger類

/**
 * 整合swagger2
 */
@Configuration
@EnableSwagger2
public class SwaggerConfig extends WebMvcConfigurationSupport {

    /**
     * 設(shè)置一個開關(guān),生產(chǎn)版本為false羞福,關(guān)閉swagger
     */
    @Value("${swagger.ebable}")
    private boolean ebable;

    @Bean
    public Docket createRestApi(){
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).
                enable(ebable).select().apis(RequestHandlerSelectors.basePackage("com.demo.controller")). //掃描包
                paths(PathSelectors.any()).build();
        //可以設(shè)置為掃描多個包
        /**
         * com.google.common.base.Predicate<RequestHandler> selector1 = RequestHandlerSelectors.basePackage("設(shè)置你要掃描的包路徑");
         * com.google.common.base.Predicate<RequestHandler> selector2 = RequestHandlerSelectors.basePackage("設(shè)置你要掃描的包路徑");
         * createRestApi這樣寫即可醇锚。
         * @Bean
         *     public Docket createRestApi(){
         *         return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).
         *         enable(ebable).select().
         *         apis(Predicates.or(selector1,selector2)).
         *         paths(PathSelectors.any()).build();
         *     }
         */
    }


    @SuppressWarnings("deprecation")
    public ApiInfo apiInfo(){
        return new ApiInfoBuilder().title("接口文檔").
            description("服務(wù)端通用接口").version("1.0").build();
    }

    /**
     * 一定要寫這個方法,不然訪問swagger-ui.html頁面會404
     * @param registry
     */
    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**").
          addResourceLocations("classpath:/META-INF/resources/").
          setCachePeriod(0);
    }

}

SwaggerConfig類上有一個ebable屬性坯临,我們可以在yml文件上定義一下焊唬,當我們要上生產(chǎn)環(huán)境時,把這個ebable屬性為false看靠,swagger就關(guān)閉了赶促。

swagger: ##給swagger設(shè)置一個開關(guān)
  ebable: true

配置好了,咱們來寫一個controller挟炬。

@RestController
@Api(description = "關(guān)于用戶接口",value = "用戶接口",tags = {"用戶接口"})  //使用@Api來修飾類
public class UserController {

    @Autowired
    private UserService userService;


    @GetMapping("/getUser/{userId}")    //使用RestFul風格
    //使用@ApiOperation注解來修飾接口
    @ApiOperation(value = "通過用戶Id來獲取用戶信息",notes = "RestFul風格鸥滨,需要傳用戶Id")
    //使用ApiImplcitParam修飾接口參數(shù)
    @ApiImplicitParam(name = "userId",value = "用戶Id",required = true)
    public User getUserById(@PathVariable("userId") Integer userId){
        return userService.selectById(userId);
    }
}

依賴也導入了,配置也配好了谤祖,接口也寫好了婿滓,咱們來啟動一下這個程序吧。



啟動成功后粥喜,直接訪問localhost:8080/swagger-ui.html凸主,就能看到swagger為咱們生成的接口文檔了。

springboot2+swagger2的整合就到此結(jié)束了额湘。但是swagger2還有一些注解沒給大家介紹卿吐,因為swagger2是通過各種注解來生成接口文檔的,下面就給大家介紹介紹swagger2的注解锋华。

@Api:修飾整個類嗡官,描述Controller的作用
@ApiOperation:描述一個類的一個方法,或者說一個接
@ApiParam:單個參數(shù)描述
@ApiModel:用對象來接收參數(shù)
@ApiProperty:用對象接收參數(shù)時毯焕,描述對象的一個字段
@ApiResponse:HTTP響應(yīng)其中1個描述
@ApiResponses:HTTP響應(yīng)整體描述
@ApiIgnore:使用該注解忽略這個API
@ApiError :發(fā)生錯誤返回的信息
@ApiImplicitParam:一個請求參數(shù)
@ApiImplicitParams:多個請求參數(shù)

整篇文章就到此結(jié)束衍腥,如果大家在整合的過程中還有什么問題可以留言給我,我也把我自己整合的源碼放到github上,大家可以點擊閱讀原文來clone婆咸,下方也留了github的鏈接竹捉,也別忘記給我star哦。

github倉庫鏈接:https://github.com/wuyanzu01/springboot2swagger2

請關(guān)注微信公眾號:請快點喜歡我

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末擅耽,一起剝皮案震驚了整個濱河市活孩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌乖仇,老刑警劉巖憾儒,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異乃沙,居然都是意外死亡起趾,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門警儒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來训裆,“玉大人,你說我怎么就攤上這事蜀铲”吡穑” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵记劝,是天一觀的道長变姨。 經(jīng)常有香客問我,道長厌丑,這世上最難降的妖魔是什么定欧? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮怒竿,結(jié)果婚禮上砍鸠,老公的妹妹穿的比我還像新娘。我一直安慰自己耕驰,他們只是感情好爷辱,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著耍属,像睡著了一般托嚣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上厚骗,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天,我揣著相機與錄音兢哭,去河邊找鬼领舰。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的冲秽。 我是一名探鬼主播舍咖,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼锉桑!你這毒婦竟也來了排霉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤民轴,失蹤者是張志新(化名)和其女友劉穎攻柠,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體后裸,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡瑰钮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了微驶。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浪谴。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖因苹,靈堂內(nèi)的尸體忽然破棺而出苟耻,到底是詐尸還是另有隱情,我是刑警寧澤扶檐,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布凶杖,位于F島的核電站,受9級特大地震影響蘸秘,放射性物質(zhì)發(fā)生泄漏官卡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一醋虏、第九天 我趴在偏房一處隱蔽的房頂上張望寻咒。 院中可真熱鬧,春花似錦颈嚼、人聲如沸毛秘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽叫挟。三九已至,卻和暖如春限煞,著一層夾襖步出監(jiān)牢的瞬間抹恳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工署驻, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留奋献,地道東北人健霹。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像瓶蚂,于是被迫代替她去往敵國和親糖埋。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355

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