springboot如何集成Swagger2
一、是什么
當(dāng)下很多公司都采取前后端分離的開(kāi)發(fā)模式,前端和后端的工作由不同的工程師完成。在這種開(kāi)發(fā)模式下,維持一份及時(shí)更新且完整的 Rest API 文檔將會(huì)極大的提高我們的工作效率。傳統(tǒng)意義上的文檔都是后端開(kāi)發(fā)人員手動(dòng)編寫(xiě)的,相信大家也都知道這種方式很難保證文檔的及時(shí)性,這種文檔久而久之也就會(huì)失去其參考意義,反而還會(huì)加大我們的溝通成本。而 Swagger 給我們提供了一個(gè)全新的維護(hù) API 文檔的方式。
二、為什么要使用它
1、代碼變更,文檔跟著代碼變、只需要少量的注解Swagger就可以根據(jù)代碼自動(dòng)的生成API文檔,很好的保證了文檔的實(shí)時(shí)性。
2、跨語(yǔ)言,Swagger支持40多種語(yǔ)言。
3、Swagger UI 呈現(xiàn)出來(lái)的是一份可以交互的API文檔,我們可以直接在文檔頁(yè)面嘗試API的調(diào)用,省去了準(zhǔn)備復(fù)雜的調(diào)用參數(shù)的過(guò)程。
4、還可以將文檔規(guī)范導(dǎo)入相關(guān)的工具里面(例如:Postman、SoapUI)、這些工具將會(huì)為我們自動(dòng)地創(chuàng)建自動(dòng)化測(cè)試。
三、怎么用
1、在項(xiàng)目pom.xml里面加入Swagger2相關(guān)的依賴(lài)
<!--swagger2配置-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.6</version>
</dependency>
2、新建Swagger2的配置類(lèi)
package com.zhouhong.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.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* @ClassName: Swagger2
* @Description:
* @Author: 周紅
* @NickName: Tom-shuhu
* @Date: Created in 2020/12/15
**/
@Configuration
@EnableSwagger2
public class Swagger2 {
// http://localhost:8088/swagger-ui.html 原路徑
// http://localhost:8088/doc.html 原路徑
//配置swagger2核心配置
@Bean
public Docket createRestApi(){
return new Docket(DocumentationType.SWAGGER_2) //指定api類(lèi)型位swagger2
.apiInfo(apiInfo()) //用于定義api文檔匯總信息
.select().apis(RequestHandlerSelectors
.basePackage("com.zhouhong.controller")) //指定生成文檔的controller
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo(){
return new ApiInfoBuilder()
.title("Tom-shushu 的項(xiàng)目接口api") //文檔標(biāo)題
.contact(new Contact("周紅", //作者
"www.zhouhong.icu",
"15249239025@163.com")) //聯(lián)系人
.description("Tom-shushu 的項(xiàng)目api接口")//詳細(xì)信息
.version("1.0.0")//文檔版本號(hào)
.termsOfServiceUrl("www.zhouhong.icu")//網(wǎng)站地址
.build();
}
}
文檔配置說(shuō)明:
a.為任何接口生成API文檔,這種方式不必在接口方法上加任何注解,方便的同時(shí)也會(huì)因?yàn)闆](méi)有添加任何注解所以生成的API文檔也沒(méi)有注釋?zhuān)勺x性不高。
@Bean
public Docket createRestApi(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
//為任何接口生成API文檔
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
b.為當(dāng)前配置的包下controller生成API文檔
.apis(RequestHandlerSelectors.basePackage("com.troila"))
c.為有@Api注解的Controller生成API文檔
.apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
d.為有@ApiOperation注解的方法生成API文檔
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
三、常見(jiàn)注解簡(jiǎn)介
@Api:修飾整個(gè)類(lèi),描述Controller的作用 @ApiOperation:描述一個(gè)類(lèi)的一個(gè)方法,或者說(shuō)一個(gè)接口 @ApiParam:?jiǎn)蝹€(gè)參數(shù)描述 @ApiModel:用對(duì)象實(shí)體來(lái)作為入?yún)? @ApiProperty:用對(duì)象接實(shí)體收參數(shù)時(shí),描述對(duì)象的一個(gè)字段 @ApiResponse:HTTP響應(yīng)其中1個(gè)描述 @ApiResponses:HTTP響應(yīng)整體描述 @ApiIgnore:使用該注解忽略這個(gè)API @ApiError :發(fā)生錯(cuò)誤返回的信息 @ApiImplicitParam:一個(gè)請(qǐng)求參數(shù) @ApiImplicitParams: 多個(gè)請(qǐng)求參數(shù)
四、演示(為方便我使用了上面第一種配置)
1、使用原路徑訪問(wèn)

2、原路徑調(diào)試

3、doc模式訪問(wèn)

4、doc模式調(diào)試

以上就是springboot集成Swagger2的詳細(xì)內(nèi)容,更多關(guān)于springboot集成Swagger2的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
java.net.SocketException: Connection reset 解決方法
最近糾結(jié)致死的一個(gè)java報(bào)錯(cuò)java.net.SocketException: Connection reset 終于得到解決2013-03-03
解決JAVA8 Collectors.toMap value為null報(bào)錯(cuò)的問(wèn)題
這篇文章主要介紹了解決JAVA8 Collectors.toMap value為null報(bào)錯(cuò)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01
Springboot集成百度地圖實(shí)現(xiàn)定位打卡的示例代碼
本文主要介紹了Springboot集成百度地圖實(shí)現(xiàn)定位打卡的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-02-02
Java實(shí)現(xiàn)整合文件上傳到FastDFS的方法詳細(xì)
FastDFS是一個(gè)開(kāi)源的輕量級(jí)分布式文件系統(tǒng),對(duì)文件進(jìn)行管理,功能包括:文件存儲(chǔ)、文件同步、文件上傳、文件下載等,解決了大容量存儲(chǔ)和負(fù)載均衡的問(wèn)題。本文將提供Java將文件上傳至FastDFS的示例代碼,需要的參考一下2022-02-02
使用Java 壓縮文件打包tar.gz 包的詳細(xì)教程
本文帶領(lǐng)大家學(xué)習(xí)如何使用Java 壓縮文件打包tar.gz 包,主要通過(guò) Apache compress 工具打包,通過(guò)示例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2021-05-05
SpringBoot接收LocalDateTime參數(shù)的方式
這篇文章主要介紹了SpringBoot接收LocalDateTime參數(shù)的方式,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-08-08
idea項(xiàng)目代碼打包為jar包的超詳細(xì)步驟
因?yàn)闃I(yè)務(wù)開(kāi)發(fā)場(chǎng)景需要,將開(kāi)發(fā)項(xiàng)目中的Java類(lèi)打成一個(gè)jar包引入到外部工具中,下面這篇文章主要給大家介紹了關(guān)于idea項(xiàng)目代碼打包為jar包的相關(guān)資料,需要的朋友可以參考下2023-01-01
Java實(shí)現(xiàn)PDF轉(zhuǎn)為Word文檔的示例代碼
眾所周知,PDF文檔除了具有較強(qiáng)穩(wěn)定性和兼容性外,?還具有較強(qiáng)的安全性,在工作中可以有效避免別人無(wú)意中對(duì)文檔內(nèi)容進(jìn)行修改。本文將分為以下兩部分介紹如何在保持布局的情況下將PDF轉(zhuǎn)為Word文檔,希望對(duì)大家有所幫助2023-01-01
在Java的JDBC使用中設(shè)置事務(wù)回滾的保存點(diǎn)的方法
這篇文章主要介紹了在Java的JDBC使用中設(shè)置事務(wù)回滾的保存點(diǎn)的方法,JDBC是Java用于連接各種數(shù)據(jù)庫(kù)的API,需要的朋友可以參考下2015-12-12

