Swagger快速入门
学习目标:
- 了解Swagger的作用和概念
- 了解前后端分离
- 在SpringBoot中集成Swaggers
适用于前后端分离项目vue+springboot
Swagger介绍
- swagger号称世界上最流行的Api框架
- RestFul Api文档在线自动生成工具=>
Api文档与Api定义同步更新
- 直接运行,可以在线测试API接口
- 支持多种语言(java,php)
在项目中是用swagger,
-
swagger2
-
ui
在SpringBoot集成Swagger
导入依赖
<!--swagger2-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<!--swagge-ui-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
检查是否成功集成可以访问swagger-ui.html
配置swagger信息
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.ArrayList;
@Configuration
@EnableSwagger2 //开启swagger2
public class swaggerconfigruation {
@Bean
public Docket docket(){
return new Docket( DocumentationType.SWAGGER_2)
.apiInfo(apiinfo());
}
//配置swagger apiinfo信息
private ApiInfo apiinfo(){
Contact DEFAULT_CONTACT = new Contact("zl", "", "[email protected]");
return new ApiInfo(
"zl的swagger学习",
"轻舟已过万重山",
"1.0",
"urn:tos",
DEFAULT_CONTACT,
"Apache 2.0",
"http://www.apache.org/licenses/LICENSE-2.0",
new ArrayList());
}
}
Swagger配置扫描接口
适用Swagger3.0版本,上面使用的是swagger2.0
swagger访问ui的地址是http://localhost:8080/swagger-ui/
注意 swagger3.0版本与2.0版本在导入依赖上的区别
3.0只需要导入swagger启动器
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
@Bean
public Docket docket(){
return new Docket( DocumentationType.OAS_30)
.apiInfo(apiinfo())
.enable(true)
//实现分组
.groupName("zl")
.select()
//basePackage 扫描指定的包
//any()扫描所有
//none()什么都不扫描
//withClassAnnotation() 扫描拥有指定注解类对象
//withMethodAnnotation() 扫描拥有指定注解方法的对象
.apis(RequestHandlerSelectors.basePackage("com.zl.controller"))
//paths过滤什么路径[代表只要/zl路径下面的接口]
.paths(PathSelectors.ant("/zl/**"))
.build();
}
思考一个问题,当我们需要协同开发时如何实现多个分组
答:其实一个分组是由一个Docket bean实列实现的,所以要实现多个分组就是实现多个docket bean实列
动态调整swagger的运行状态
@Bean
public Docket docket(Environment environment){
//实现判断当前运行的环境是什么环境
//获取当前生产环境,上线项目不使用swagger
//boolean env = environment.getActiveProfiles()[0].equals("dev");
Profiles profiles = Profiles.of("dev", "test");//当生产环境是dev或者test的时候
boolean flag = environment.acceptsProfiles(profiles);
return new Docket( DocumentationType.OAS_30)
.apiInfo(apiinfo())
.enable(flag)
.groupName("zl")
.select()
//basePackage 扫描指定的包
//any()扫描所有
//none()什么都不扫描
//withClassAnnotation() 扫描拥有指定注解类对象
//withMethodAnnotation() 扫描拥有指定注解方法的对象
.apis(RequestHandlerSelectors.basePackage("com.zl.controller"))
//paths过滤什么路径[代表只要/zl路径下面的接口]
// .paths(PathSelectors.ant("/zl/**"))
.build();
}
knife4j学习
knife4j (xiaominfo.com) 访问di http://localhost:17790/doc.html
标签:zl,springfox,Swagger,扫描,import,swagger,Docket From: https://www.cnblogs.com/wzl66/p/17910126.html