SpringBoot整合Swagger2,搭建Restful API在線文檔

Swagger是一個(gè)功能強(qiáng)大的在線API文檔框架铛漓,目前它的版本是2.x溯香,所以稱為Swagger2。Swagger2提供了在線文檔的查閱和測試功能浓恶。下面看看怎么在SpringBoot中集成Swagger2玫坛。

1、引入依賴

在pom文件引入下面的依賴

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>
2包晰、配置Swagger2

寫一個(gè)配置類湿镀,加上相關(guān)的注解,代碼如下

@Configuration
@EnableSwagger2
public class Swagger2 {
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.codeliu.controller"))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("SpringBoot利用swagger構(gòu)建api文檔")
                .description("歡迎關(guān)注公眾號【禿頭哥編程】")
                .version("1.0")
                .build();
    }
}

其中@Configuration注解表示這是一個(gè)配置類伐憾,@EnableSwagger2開啟Swagger2的功能勉痴。在配置類中需要注入一個(gè)Docket的Bean,該Bean包含了apiInfo树肃,即基本的API文件的描述信息蒸矛,以及包掃描的基本包名等信息。

3胸嘴、生成文檔的注解

Swagger2通過注解來生成API接口文檔雏掠,文檔信息包括接口名、請求方法劣像、參數(shù)乡话、返回信息等。通常情況下用于生成在線API文檔耳奕,下面是常見的注解:

  • @Api:修飾整個(gè)類绑青,用于描述Controller。
  • @ApiOperation:描述類的方法吮铭,或者說一個(gè)接口时迫。
  • @ApiParam:單個(gè)參數(shù)描述颅停。
  • @ApiModel:用對象來接收參數(shù)谓晌。
  • @ApiProperty:用對象接收參數(shù)時(shí),描述一個(gè)對象的字段癞揉。
  • @ApiResponse:HTTP響應(yīng)的一個(gè)描述纸肉。
  • @ApiResponses:HTTP響應(yīng)的整體描述。
  • @ApiIgnore:Swagger2忽略該api喊熟。
  • @ApiError:發(fā)生錯(cuò)誤返回的信息柏肪。
  • @ApiParamImplicit:一個(gè)請求參數(shù)。
  • @ApiParamsImplicit:多個(gè)請求參數(shù)芥牌。
4烦味、編寫dao層代碼
@Mapper
public interface GarbageSearchMapper {

    GarbageSearch findGarbageByName(String name);

    List<GarbageSearch> findAll();

    Integer addGarbage(GarbageSearch garbageSearch);

    Integer updateGarbage(GarbageSearch garbageSearch);

    Integer deleteGarbage(Integer id);
}

上面就是一些普通的增刪改查。

5、編寫Service層代碼

構(gòu)建一組RESTful風(fēng)格的API接口谬俄。

@Service
public class GarbageSearchServiceImpl implements GarbageSearchService {

    @Autowired
    private GarbageSearchMapper garbageSearchMapper;

    public GarbageSearch findGarbageByName(String name) {
        return garbageSearchMapper.findGarbageByName(name);
    }

    public List<GarbageSearch> findAll() {
        return garbageSearchMapper.findAll();
    }

    public Integer addGarbage(GarbageSearch garbageSearch) {
        return garbageSearchMapper.addGarbage(garbageSearch);
    }

    public Integer updateGarbage(GarbageSearch garbageSearch) {
        return garbageSearchMapper.updateGarbage(garbageSearch);
    }

    public Integer deleteGarbage(Integer id) {
        return garbageSearchMapper.deleteGarbage(id);
    }
}

6柏靶、Web層

在該層通過Get、Post溃论、Delete屎蜓、Put這四種Http方法,構(gòu)建一組RESTful風(fēng)格的API钥勋。

@RestController
@RequestMapping("/garbage/search")
public class GarbageSearchController {

    @Autowired
    private GarbageSearchService garbageSearchService;

    @ApiOperation(value = "垃圾列表", notes = "獲取所有垃圾")
    @GetMapping(value = {""})
    public List<GarbageSearch> getGarbages() {
        List<GarbageSearch> garbages = garbageSearchService.findAll();
        return garbages;
    }

    @ApiOperation(value = "增加垃圾", notes = "增加一條垃圾搜索記錄")
    @PostMapping(value = "")
    public Integer postGarbage(@RequestBody GarbageSearch garbageSearch) {
        return garbageSearchService.addGarbage(garbageSearch);
    }

    @ApiOperation(value = "刪除垃圾搜索記錄", notes = "根據(jù)垃圾的id刪除垃圾搜索記錄")
    @DeleteMapping(value = "/{id}")
    public Integer deleteGarbage(@PathVariable Integer id) {
        return garbageSearchService.deleteGarbage(id);
    }

    @ApiOperation(value = "更新信息", notes = "根據(jù)指定的id更新垃圾搜索記錄")
    @PutMapping(value = "/{id}")
    public Integer putGarbage(@PathVariable Integer id, @RequestBody GarbageSearch garbageSearch) {
        GarbageSearch garbageSearch1 = new GarbageSearch();
        garbageSearch1.setGarbageSearchCount(garbageSearch.getGarbageSearchCount() + 1);
        garbageSearch1.setGarbageSearchId(id);

        return garbageSearchService.updateGarbage(garbageSearch);
    }

    @ApiIgnore
    @GetMapping(value = "/hi")
    public String test() {
        return "hello world";
    }
}

通過@ApiOperation注解描述生成在線文檔的具體API的說明炬转,其中value值為該接口的名稱,note為該接口的詳細(xì)文檔說明算灸。這樣就可以讓Swagger2生成在線的API接口文檔了扼劈,如果不需要某接口生成文檔,只需要加上@ApiIgnore注解即可乎婿。

啟動(dòng)項(xiàng)目测僵,輸入http://localhost:{項(xiàng)目端口號}/swagger-ui.html,瀏覽器就會(huì)生成接口文檔谢翎。

微信圖片_20191001214033.png

點(diǎn)開接口捍靠,還可以看到詳細(xì)信息包括參數(shù)和返回值、錯(cuò)誤碼等信息森逮。

微信圖片_20191001214113.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末榨婆,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子褒侧,更是在濱河造成了極大的恐慌良风,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件闷供,死亡現(xiàn)場離奇詭異烟央,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)歪脏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門疑俭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人婿失,你說我怎么就攤上這事钞艇。” “怎么了豪硅?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵哩照,是天一觀的道長。 經(jīng)常有香客問我懒浮,道長飘弧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮次伶,結(jié)果婚禮上蹋岩,老公的妹妹穿的比我還像新娘。我一直安慰自己学少,他們只是感情好剪个,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著版确,像睡著了一般扣囊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上绒疗,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天侵歇,我揣著相機(jī)與錄音,去河邊找鬼吓蘑。 笑死惕虑,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的磨镶。 我是一名探鬼主播溃蔫,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼琳猫!你這毒婦竟也來了伟叛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤脐嫂,失蹤者是張志新(化名)和其女友劉穎统刮,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體账千,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡侥蒙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了匀奏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鞭衩。...
    茶點(diǎn)故事閱讀 39,902評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖攒射,靈堂內(nèi)的尸體忽然破棺而出醋旦,到底是詐尸還是另有隱情恒水,我是刑警寧澤会放,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站钉凌,受9級特大地震影響咧最,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一矢沿、第九天 我趴在偏房一處隱蔽的房頂上張望滥搭。 院中可真熱鬧,春花似錦捣鲸、人聲如沸瑟匆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽愁溜。三九已至,卻和暖如春外厂,著一層夾襖步出監(jiān)牢的瞬間冕象,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工汁蝶, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留渐扮,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓掖棉,卻偏偏與公主長得像墓律,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子幔亥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評論 2 354

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