Springboot整合Swagger2和Swagger3全過程
一、Swagger2的作用
手寫Api文檔的幾個痛點:
- 文檔需要更新的時候,需要再次發(fā)送一份給前端,也就是文檔更新交流不及時。
- 接口返回結(jié)果不明確
- 不能直接在線測試接口,通常需要使用工具,比如postman
- 接口文檔太多,不好管理
Swagger也就是為了解決這個問題,當(dāng)然也不能說Swagger就一定是完美的,當(dāng)然也有缺點,最明顯的就是代碼移入性比較強。
二、pom依賴:springfox-swagger2、springfox-swagger-ui
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>${swagger2.version}</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>${swagger2.version}</version> </dependency>
三、Swagger2配置類
@Configuration @EnableSwagger2 //開啟Swagger2 public class SwaggerConfig { @Bean public Docket webApiConfig(){ return new Docket(DocumentationType.SWAGGER_2) .groupName("webApi") .apiInfo(webApiInfo()) .select() .paths(Predicates.not(PathSelectors.regex("/admin/.*"))) .paths(Predicates.not(PathSelectors.regex("/error.*"))) .build(); } private ApiInfo webApiInfo(){ return new ApiInfoBuilder() .title("在線教育API文檔") .description("本文檔描述了在線教育微服務(wù)接口定義") .version("0.0.1-SNAPSHOT") .contact(new Contact("java","http://atguigu.com","123456@qq.com")) .build(); } }
有這兩步就已經(jīng)完成swagger的基本功能,可以訪問http://localhost:{port}/swagger-ui.html,來實現(xiàn)調(diào)用controller中的接口。如
但實際上,我們依然可以給controller的類、接口、接口入?yún)⑻砑幼⒔猓?以實現(xiàn)功能說明的作用。
- @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ù)
四、Controller類添加Swagger的注解
@Api(description = "講師管理") //修飾整個類,描述Controller的作用 @RestController @RequestMapping("/eduservice/teacher") public class EduTeacherController { @Autowired private EduTeacherService eduTeacherService; @ApiOperation("查找全部功能") @GetMapping("/findall") public List<EduTeacher> findAll(){ List<EduTeacher> list = eduTeacherService.list(); return list; } @ApiOperation("邏輯刪除功能") @DeleteMapping("{id}") //{id}表示id值通過路徑傳遞 public void removeById(@PathVariable("id") String id){ eduTeacherService.removeById(id); } }
再次訪問Swagger-ui,效果如下
五、整合Swagger3配置類
@EnableSwagger2 @Configuration public class SwaggerConfig { @Bean public Docket webApiConfig(){ return new Docket(DocumentationType.SWAGGER_2) .groupName("webApi") .apiInfo(webApiInfo()) .select() //PathSelectors.regex("/error.*")選擇器,negate()表示取反 .paths(PathSelectors.regex("/error.*").negate()) .build(); } private ApiInfo webApiInfo(){ return new ApiInfoBuilder() .title("在線教育API文檔") .description("本文檔描述了在線教育微服務(wù)接口定義") .version("1.0-SNAPSHOT") .build(); } }
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot實戰(zhàn)之實現(xiàn)結(jié)果的優(yōu)雅響應(yīng)案例詳解
這篇文章主要介紹了SpringBoot實戰(zhàn)之實現(xiàn)結(jié)果的優(yōu)雅響應(yīng)案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-09-09IntelliJ IDEA 2020.3.3現(xiàn)已發(fā)布!新增“受信任項目”功能
這篇文章主要介紹了IntelliJ IDEA 2020.3.3現(xiàn)已發(fā)布!新增“受信任項目”功能,本文給大家分享了idea2020.3.3激活碼的詳細破解教程,每種方法都很好用,使用idea2020.3以下所有版本,需要的朋友可以參考下2021-03-03Java語言實現(xiàn)簡單FTP軟件 FTP上傳下載隊列窗口實現(xiàn)(7)
這篇文章主要為大家詳細介紹了Java語言實現(xiàn)簡單FTP軟件,F(xiàn)TP上傳下載隊列窗口的實現(xiàn)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-04-04java使用任務(wù)架構(gòu)執(zhí)行任務(wù)調(diào)度示例
在Java 5.0之前啟動一個任務(wù)是通過調(diào)用Thread類的start()方法來實現(xiàn)的,5.0里提供了一個新的任務(wù)執(zhí)行架構(gòu)使你可以輕松地調(diào)度和控制任務(wù)的執(zhí)行,并且可以建立一個類似數(shù)據(jù)庫連接池的線程池來執(zhí)行任務(wù),下面看一個示例2014-01-01