Swagger
1.Swagger 簡介
- 最流行的api框架
- restful api線上自動生成工具: api文件與api定義同步更新
- 直接執行,可以線上測試api介面
- 支援多種語言:java,php
2.官網 https://swagger.io
在專案中使用swagger需要springbox
- swagger2
- ui
3.SpringBoot整合Swagger
https://mvnrepository.com -->springfox-swag
1.新建專案
2.新增依賴到pom.xml
- springfox-swagger2
- springfox-swagger-ui
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>3.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>3.0.0</version>
</dependency>
3.新增配置檔案Swagger==> Config
@Configuartion
@EnableSwagger2 //開啟swagger2
public class SwaggerConfig{
//配置了swagger的docket的bean例項
@Bean
public Docket dockert(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo()
.select()
//RequestHandlerSelectors 配置要掃描介面的方式
//basePackage 指定要掃描的包
.apis(RequestHandlerSelectors.basePackage("com.xxpage.controller"))
//paths() 過濾路徑
.paths(PathSelectors.ant("/chen/**"))
.build();
}
private ApiInfo apiInfo(Environment environment){
//設定要顯示的swagger環境
Profiles profiles=Profiles.of("dev","test");
//透過environment判斷是否處在自己設定的環境中
boolean flag=environment.acceptsProfiles(profiles)
Contact contact=new Contact("chen","http://blog.xx.com","59888745@qq.com");
return new ApiInfo(
title:"xxx專案的swagger api 文件",
description:"xx",
version:"v1.0",
.enable(flag), //是否啟用swagger fasle
termsOfServiceUrl:"https://blog.xxx.com",
contact,
license:"Apache 2.0",
licenseUrl:"http://www.apache.org",
new ArraList()
);
}
}
4.配置swagger
return new ApiInfo(
title:"xxx專案的swagger api 文件",
description:"xx",
version:"v1.0",
.enable(flag), //是否啟用swagger fasle
.groupName("api1.0")
termsOfServiceUrl:"https://blog.xxx.com",
contact,
license:"Apache 2.0",
licenseUrl:"http://www.apache.org",
new ArraList()
);
5.配置swagger掃描介面
//RequestHandlerSelectors 配置要掃描介面的方式
//basePackage 指定要掃描的包
.apis(RequestHandlerSelectors.basePackage("com.xxpage.controller"))
6.配置api文件的分組
.groupName("api1.0")
7.配置多個api文件分組:多個Docket例項即可
@Bean
public Docket dockert(){
return new Docket(DocumentationType.SWAGGER_2).groupName("api1.0");
}
@Bean
public Docket dockert2(){
return new Docket(DocumentationType.SWAGGER_2).groupName("api21.0");
}
@Bean
public Docket dockert3(){
return new Docket(DocumentationType.SWAGGER_2).groupName("api3.0");
}
8.配置API方法,引數的介面說明,生成swagger文件時有對應的中文說明
@ApiOperation("xxx控制類")
@GetMapping("/user")
public String user(@ApiParam("使用者名稱") String username){
return "hello";
}
4.swagger總結
- 可以透過swagger給介面,引數新增註釋,方便測試人員理解
- 介面文件實時更新,不用另外發時間寫一套介面文件
- 可以線上測試,發表了介面就有了swagger介面文件
- 在正式釋出的時間,關閉swagger,提供執行速度和介面安全