一、介绍
1、前后端分离
在开始学习后端的Servlet和SSM时期,前端一些简单的HTML,CSS,JS,AJAX都是写在JSP代码中得, 前后端都是一个开发完成,交互的东西自己可定都清楚,但是随着前后端的分离,前端和后端都是一个独立的程序了,由不同的人员进行变形词儿,两个程序之间如何交互,也就是发起的HTTP请求的参数,以及获取到的requertbody信息的说明双方都是需要遵守一个规范的。就好像你去看别人写的代码,无论代码写的多好如果没有写注释没有规范,肯定是晦涩难懂的。
通常都会由后端开发人员写完功能以后提供一个接口文档,规定请求参数,根据前端所需返回对应的数据,写文档是一件很痛苦的事情,如果有一个工具就好了,就跟写实体类和mysql数据库表的对应关系一样(mybatisplus),Swagger就是一个这样的工具,而且利用<font color="red">Swagger还可以在线对接口进行测试,不用启用ponstman进行测试,写url,method这些,swagger自带这样的网页在线测试</font>
二、SpringBoot集成
1、依赖引入
maven仓库
在这里我使用使用人数最多的。保持两个版本一致
mvn依赖
<!-- 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>
2、配置
指定包,类/方法上注解,过滤,协同开发,根据系统环境设置是否开启swagger
@Configuration //配置注解,会被springboot扫描到
@EnableSwagger2 //开启swagger2
public class SwaggerConfig {
@Bean
public Docket docket1(){
return new Docket(DocumentationType.SWAGGER_2).groupName("A");
}
@Bean
public Docket docket2(){
return new Docket(DocumentationType.SWAGGER_2).groupName("B");
}
@Bean
public Docket docket3(){
return new Docket(DocumentationType.SWAGGER_2).groupName("C");
}
@Bean
public Docket docket(){
return new Docket(
DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.enable(true)//是否启用,获取项目的环境,如果是开发环境,那么则不能访问swagger-ui.html页面
.select() //ApiSeelctorBuilder api选择创建者
//basePackage指定包扫描结构,any扫描全部,none全都不扫描
//withClassAnnotation:扫描类上的注解
//withMethodAnnotation:扫描方法上的注解
.apis(RequestHandlerSelectors.basePackage("com.example.epin.controller"))
//过滤api,不符合条件的过滤掉
// .paths(PathSelectors.ant("/com/example/epin/config/**"))
.build();
}
}
private ApiInfo apiInfo(){
Contact contact = new Contact("作者信息","个人站点","email");
return new ApiInfo(
"标题",
"描述",
"版本",
"组织网站",
contact,
"证书",
"证书网站地址",
new ArrayList()
);
}
}
三、常用注解
swagger会扫描所有接口中返回值的实体类到页面中得model中显示
ApiModel(“说明”);实体类上面的说明
ApiModelProperty(“说明”);实体类中属性的说明
ApiOperation(“说明”);接口类中得方法上的说明
ApiParam(“说明”);接口类中得方法的参数的说明