一、swagge簡介
前后端分離:
后端U后端控制層,服務(wù)層,數(shù)據(jù)訪問層【后端團隊】
前端:前端控制層,視圖層【前端團隊】
前后端通過API進行交互
前后端相對獨立且松耦合
產(chǎn)生問題:前后端集成,前端或者后端無法做到“及時協(xié)商,盡早解決”,最終導(dǎo)致問題集中爆發(fā)
解決方法:首先定義schema [ 計劃的提綱 ],并實時跟蹤最新的API,降低集成風(fēng)險
前后端分離: 前端測試后端接口:postman
后端提供接口,需要實時更新最新的消息及改動!
- 號稱世界上最流行的API框架
- Restful Api 文檔在線自動生成器 => API 文檔 與API 定義同步更新
- 直接運行,在線測試API
- 支持多種語言 (如:Java,PHP等)
- 官網(wǎng):API Documentation & Design Tools for Teams | Swagger
二、SpringBoot集成Swagger
1、新建一個SpringBoot-web項目
2、添加Maven依賴
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency>
3、編寫HelloController,測試確保運行成功!
4、要使用Swagger,我們需要編寫一個配置類-SwaggerConfig來配置 Swagger
@Configuration @EnableSwagger2 //開啟Swagger2 public class SwaggerConfig { }
5.訪問測試 :http://localhost:8081/swagger-ui.html,可以看到swagger的界面;
三、配置Swagger
1、Swagger實例Bean是Docket,所以通過配置Docket實例來配置Swaggger。
//配置了Swagger的Docket的bean實例 @Bean public Docket docket(){ return new Docket(DocumentationType.SWAGGER_2); }
2、可以通過apiInfo()屬性配置文檔信息
//配置文檔信息 private ApiInfo apiInfo() { Contact contact = new Contact("弟", "https://blog.csdn.net/weixin_48838340", "聯(lián)系人郵箱"); return new ApiInfo( "弟的Swagger學(xué)習(xí)文檔", // 標題 "學(xué)習(xí)演示如何配置Swagger", // 描述 "v1.0", // 版本 "https://blog.csdn.net/weixin_48838340", // 組織鏈接 contact, // 聯(lián)系人信息 "Apach 2.0 許可", // 許可 "許可鏈接", // 許可連接 new ArrayList<>()// 擴展 ); } }
3、Docket 實例關(guān)聯(lián)上 apiInfo()
@Bean public Docket docket(){ return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()); }
4.重啟項目
四、配置掃描接口
構(gòu)建Docket時通過select()方法配置怎么掃描接口。
//配置了Swagger的Docket的bean實例 @Bean public Docket docket(){ return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select()// 通過.select()方法,去配置掃描接口,RequestHandlerSelectors配置如何掃描接口 //any() // 掃描所有,項目中的所有接口都會被掃描到 // none() // 不掃描接口 // withMethodAnnotation通過方法上的注解掃描,如withMethodAnnotation(GetMapping.class)只掃描get請求 // 通過類上的注解掃描,如.withClassAnnotation(Controller.class)只掃描有controller注解的類中的接口 .apis(RequestHandlerSelectors.basePackage("com.longdi.swagger.controller")) //path() 過濾什么路徑 .paths(PathSelectors.ant("/longdi/**")) .build(); };
五、配置Swagger開關(guān)
1、通過enable()方法配置是否啟用swagger
@Bean public Docket docket() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .enable(false) //配置是否啟用Swagger,如果是false,在瀏覽器將無法訪問 .select()// 通過.select()方法,去配置掃描接口,RequestHandlerSelectors配置如何掃描接口 .apis(RequestHandlerSelectors.basePackage("com.longdi.swagger.controller")) // 配置如何通過path過濾,即這里只掃描請求以/longdi開頭的接口 .paths(PathSelectors.ant("/longdi/**")) .build(); }
2.如何動態(tài)配置當項目處于test、dev環(huán)境時顯示swagger
@Bean public Docket docket(Environment environment) { // 設(shè)置要顯示swagger的環(huán)境 Profiles of = Profiles.of("dev", "test"); // 判斷當前是否處于該環(huán)境 // 通過 enable() 接收此參數(shù)判斷是否要顯示 boolean b = environment.acceptsProfiles(of); return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .enable(b) //配置是否啟用Swagger,如果是false,在瀏覽器將無法訪問 .select()// 通過.select()方法,去配置掃描接口,RequestHandlerSelectors配置如何掃描接口 .apis(RequestHandlerSelectors.basePackage("com.longdi.swagger.controller")) // 配置如何通過path過濾,即這里只掃描請求以/longdi開頭的接口 .paths(PathSelectors.ant("/longdi/**")) .build(); }
六、配置API分組
1.如果沒有配置分組,默認是default。通過groupName()方法即可配置分組:
@Bean public Docket docket1(Environment environment) { return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()) .groupName("A") ;// 配置分組 // 省略配置.... }
2.配置多個分組只需要配置多個docket即可
3.重啟看到下面效果
七、實體配置
1.新建一個實體類
@ApiModel為類添加注釋
@ApiModelProperty為類屬性添加注釋
2.只要這個實體在請求接口的返回值上(即使是泛型),都能映射到實體項中:
//只要我們的接口中,返回值中存在實體類,它就會被掃描到Swagger中 @PostMapping(value="/user") public User getUser(){ return new User(); }
3.查看效果
4.可以給請求的接口配置一些注釋
//Operation接口,不是放在類上的,是方法 @ApiOperation("弟的接口") @GetMapping("/hello2") public String kuang(@ApiParam("這個名字會被返回")String username){ return "hello"+username; }
八、總結(jié):
1.我們可以通過Swagger給一些比較難理解的屬性或者接口,增加注釋信息
2接口文檔實時更新
3.可以在線測試
Swagger是一個優(yōu)秀的工具,幾乎所有大公司都有使用它
【注意點】在正式發(fā)布的時候,需要關(guān)閉Swagger! 因為出于安全考慮,同時節(jié)省運行的內(nèi)存!
到此這篇關(guān)于Java SpringBoot詳解集成以及配置Swagger流程的文章就介紹到這了,更多相關(guān)Java SpringBoot Swagger內(nèi)容請搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!
原文鏈接:https://blog.csdn.net/weixin_48838340/article/details/120706190