1. 程式人生 > 實用技巧 >SpringBoot 整合Swagger

SpringBoot 整合Swagger

swaggle

前後端分離:

問題:

前後端整合聯調,前後端難以做到“及時協調”,矛盾出現

解決:

指定schema[計劃提綱],及時更新最新api,降低整合的風險

前端:postman

後端:提供介面,需要實時更新最新的訊息及其改動

簡介:

號稱世界上最流行的Api框架

RestFul Api 文件線上自動生成工具 => api文件和api定義線上同步進行更新

直接執行,可以線上測試api介面

支援多種語言:(java、PHP)

簡單進行配置後使用相關注解即可進行使用

官網:https://swagger.io/

依賴:

<!-- 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>

<!--新增解決 parameter type integer 報錯的配置 -->
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.5.22</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
<version>1.5.22</version>
</dependency>

配置SwaggerConfig:

配置後

效果:baseUrl/swagger-ui.html

執行後即可開啟:

配置:

Swagger的bean例項Docket:

一個Docket例項實際上就是一個分組 ---實際開發中用於區分開發人員或者專案分組

其實主要資訊也就標題和描述而已

@Configuration
@EnableSwagger2 //開啟Swagger2
public class SwaggerConfig {

@Bean
public Docket docket(){
return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()) //進去方法的實現類中去摸索一下
//嘗試關閉
.groupName("良夜") //設定當前Docket例項的分組名為 良夜
.enable(false) //enable為false則不能在瀏覽器中訪問swagger文件,可以配合上判斷當前專案環境來進行使用
.select()
/**
*RequestHandleSelectors,配置要掃描介面的方式
* basePackage:指定要掃描的包
* any():掃描全部
* none():不掃描
* withClassAnnotation():掃描類上註解,引數是一個註解的反射物件
* withMethodsAnnotation:掃描方法上的註解
*/
.apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
//設定要過濾的路徑
//.paths(PathSelectors.ant("/hello/**"))
.build();
}

private ApiInfo apiInfo(){ // 設定下文件的檔案資訊 ApiInfo
/**
* 作者資訊
*/
Contact contact = new Contact("liangye","http://liangye-xo.xyz","[email protected]");
/**
* 配置swagger的檔案資訊
*/
return new ApiInfo(
"良夜的Api文件",
"這個博主有點帥",
"v1.0",
"http://liangye-xo.xyz",
contact,
"Apache 2.0",
"http://www.apache.org/licenses/LICENSE-2.0",
new ArrayList());
}
}

配置掃描介面:

設定ApiInfo(*).enable(false)後效果: