SpringBoot整合Swagger3的流程詳解
1、創(chuàng)建項(xiàng)目
首先創(chuàng)建一個SpringBoot項(xiàng)目,隨便勾選幾個項(xiàng)目依賴,我選擇了web、thymeleaf、lombok。
添加項(xiàng)目依賴,這里使用Swagger3(與Swagger2略有差異),并且添加一個好看一點(diǎn)的ui界面
<!-- swagger --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version> </dependency> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>swagger-bootstrap-ui</artifactId> <version>1.9.6</version> </dependency>
2、配置Swagger
- Swagger最核心的類就是Docket、它可以配置作者信息、掃描類型…
- 首先創(chuàng)建一個SwaggerConfig配置類,添加@Configuration和@EnableOpenApi注解。
- 然后再向里面丟入Docket類的Bean實(shí)例,然后默認(rèn)就可以訪問了
@Configuration @EnableOpenApi public class SwaggerConfig { @Bean Docket docket(){ return new Docket(DocumentationType.SWAGGER_2) } }
訪問localhost:8080/doc.html頁面就可以看到了,/error接口的8種請求方式默認(rèn)會出現(xiàn)在文檔中,以及一些可以配置的信息
3、Swagger配置
上圖紅字的位置都是可以進(jìn)行配置的,可以針對不同人寫的不同接口等信息放在不同的分組中。
3.1、配置主頁信息
其實(shí)這里有用的沒幾個,基本上很多信息都是默認(rèn)給出。
@Bean public ApiInfo apiInfo(){ return new ApiInfo("這是Swagger文檔", //title名稱 "歸來仍是少年", //簡介 "1.0", //版本 "urn:tos", //服務(wù)url new Contact( //配置聯(lián)系作者的方式 "xxx", //作者名稱 "https://www.baidu.com", //連接 "xxxx@qq.com"), //作者郵箱 "Apache 2.0", //許可證 "http://www.apache.org/licenses/LICENSE-2.0", //許可證地址 new ArrayList<>()); //供應(yīng)商的拓展 }
3.2、配置Docket信息
- 上面配置了主頁面的一些信息,然后需要將這些信息注入到Docket中。
- 另外配置掃描接口的路徑、過濾、分組以及是否開啟等
- 當(dāng)然這里可以拿到環(huán)境配置文件、可以根據(jù)不同的環(huán)境決定是否開啟;一般情況下這些接口都是在開發(fā)環(huán)境中進(jìn)行展示的,實(shí)際交付的時候是不會提供的。
- Docket是采用鏈?zhǔn)骄幊痰男问竭M(jìn)行配置,當(dāng)存在多個Docket時可以通過不同的分組名稱進(jìn)行區(qū)分
@Bean Docket docket_A(){ return new Docket(DocumentationType.SWAGGER_2) .groupName("TestA"); } @Bean Docket docket_B (){ return new Docket(DocumentationType.SWAGGER_2) .groupName("TestB"); } @Bean Docket docket(Environment environment){ boolean result = environment.acceptsProfiles(Profiles.of("dev")); return new Docket(DocumentationType.SWAGGER_2) .groupName("Splay") //默認(rèn)分組Default改為Splay .apiInfo(apiInfo()) //注入主頁面信息 .enable(true) //是否啟用swagger .select() //掃描 /** * apis指定要掃描的方式 * 1. basePackage(): 指定掃描的包 * 2. any(): 全部掃描 * 3. none(): 都不掃描 * 4. withClassAnnotation(): 通過類注解掃描 * 5. withMethodAnnotation(): 通過方法上的注解掃描 */ .apis(RequestHandlerSelectors.basePackage("com.splay.controller")) /** * paths過濾不需要 * 1. ant(): 制定路徑 * 2. none(): 全都不過濾 * 3. any(): 都過濾 * 4. regex(): 正則表達(dá)式 */ //.paths(PathSelectors.ant("/splay/**")) //過濾不需要的路徑 .build(); }
3.3、編寫Controller
上面通過apis方法配置只掃描com.splay.controller包下的所有接口
@Controller public class RouterController { @GetMapping("/hello") @ResponseBody public String toHello(){ return "Hello Swagger"; } }
這里可以綁定開啟的環(huán)境,通過Environment拿到進(jìn)行判斷再決定是否開啟。
3.4、效果圖
4、注解的使用
- Swagger提供了很多的注解,幾乎所有需要提供展示的東西都可以使用注解來開啟。
- @Api配置Controller類、@ApiModel類可以給pojo進(jìn)行展示、@ApiModelProperty配置pojo的屬性、@ApiOperation配置方法…
4.1、pojo的配置
當(dāng)返回值存在當(dāng)前配置的pojo時,可以在model頁面看到這些信息。
@Data @NoArgsConstructor @AllArgsConstructor @ApiModel("用戶類" ) public class User { @ApiModelProperty("用戶名") private String username; @ApiModelProperty("密碼") private String password; }
4.2、Controller的配置
Controller的名稱將會展示為tags屬性中的值
@Controller @Api(tags = "路由控制類") public class RouterController { }
4.3、接口名稱的配置
@PostMapping("/user") @ResponseBody @ApiOperation("返回用戶信息") //接口名稱、以及參數(shù) public User sendUserMessage(@ApiParam("用戶帳號") String username){ System.out.println(username); return new User("admin", "123456"); }
4.4、效果圖
到此這篇關(guān)于SpringBoot整合Swagger3的流程詳解的文章就介紹到這了,更多相關(guān)SpringBoot整合Swagger3內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決String字符串轉(zhuǎn)JSONObject順序不對的問題
這篇文章主要介紹了解決String字符串轉(zhuǎn)JSONObject順序不對的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12SpringBoot2.0 中 HikariCP 數(shù)據(jù)庫連接池原理解析
這篇文章主要介紹了SpringBoot2.0 中 HikariCP 數(shù)據(jù)庫連接池原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01AgileBoot?項(xiàng)目內(nèi)統(tǒng)一的錯誤碼設(shè)計(jì)分析
這篇文章主要為大家介紹了AgileBoot?項(xiàng)目內(nèi)統(tǒng)一的錯誤碼設(shè)計(jì)分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10如何使用Idea搭建全注解式開發(fā)的SpringMVC項(xiàng)目
這篇文章主要介紹了如何使用Idea搭建全注解式開發(fā)的SpringMVC項(xiàng)目,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-03-03使用SpringBoot+nmap4j獲取端口信息的代碼詳解
這篇文章主要介紹了使用 SpringBoot + nmap4j 獲取端口信息,包括需求背景、nmap4j 的相關(guān)介紹、代碼說明(含測試代碼、改造后的代碼及參數(shù)說明),還提到了文件讀取方式和依賴引入方式,最終請求能獲取到數(shù)據(jù),需要的朋友可以參考下2025-01-01