学习目标
- swagger的作用和概念
- 了解前后端分离
- springboot中集成swagger
Swagger简介
前后端分离产生的问题
Vue+Springboot
弊端:前端和后端对数据的需求无法及时沟通Swagger号称世界上最流行的api框架 restful api在线自动生成工具(api自动更新) 在线自动测试接口
springboot继承Swagger配置
导入依赖配置
- swagger2
- ui
配置swagger,这一步swagger已经可以运行了
@Configuration
@EnableSwagger2
public class Swaggerconfig {
}
配置完成,访问http://localhost:8081/swagger-ui.html
swagger详细配置,配置swagger的bean实例,Docket
@Bean
public Docket docket(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())//基本信息
.enable(false)//设置是否开启swagger
.groupName("zgd")//设置组名
.select()//扫描接口
.apis(RequestHandlerSelectors.basePackage("Main.Controller"))//配置扫描的方式
.build();
}
1:swagger配置信息
private ApiInfo apiInfo(){
Contact contact =new Contact("theunderkey", "1", "1");//作者信息
return new ApiInfo(
"LP",
"the interface Api of LP",
"1.0",
"urn:tos",
contact,
"Apache 2.0",
"http://www.apache.org/licenses/LICENSE-2.0",
new ArrayList()
);
}
//具体看源码
public ApiInfo(String title, String description, String version, String termsOfServiceUrl, Contact contact, String license, String licenseUrl, Collection<VendorExtension> vendorExtensions) {
this.title = title;
this.description = description;
this.version = version;
this.termsOfServiceUrl = termsOfServiceUrl;
this.contact = contact;
this.license = license;
this.licenseUrl = licenseUrl;
this.vendorExtensions = Lists.newArrayList(vendorExtensions);
}
2:配置扫描接口
Docket中有select()方法,返回ApiSelectorBuilder类实例
ApiSelectorBuilder类实例中有apis(selector)方法用来设置扫描的方式,该方法返回本实例
selector是RequestHandler接口的实现类,RequestHandlerSelectors(),我们可以查看此类中的扫描接口方式
一般使用basePackage()方法
public ApiSelectorBuilder select() {
return new ApiSelectorBuilder(this);
}
3:设置组以及swagger是否启动
swagger实例Docket中的方法
设置组名,多个组就是多个Docket实例
public Docket groupName(String groupName) {
this.groupName = (String)BuilderDefaults.defaultIfAbsent(groupName, this.groupName);
return this;
}
设置swagger是否开启,false则不开启,默认是开启的
通过环境让swagger是否开启,只用通过Environment接口的acceptsProfiles判断是什么环境即可
boolean acceptsProfiles(String... var1);
public Docket enable(boolean externallyConfiguredFlag) {
this.enabled = externallyConfiguredFlag;
return this;
}
4:实体类信息配置
常用注解
@ApiOperation("获取基本数据") //用来说明接口
@ApiParam("") //用来说明接口接受的数据
@ApiModel("日常数据类") //说明实体类
@ApiModelProperty("日期id") //说明实体类的属性