​学习视频​

新建一个SpringBoot

导入相关依赖

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

<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>

编写一个hello工程

配置Swagger => Config


在config > SwaggerConfig
@Configuration
@EnableSwagger2 //开启Swagger2
public class SwaggerConfig {


}

测试


访问:localhost:8080/swagger-ui.html


SpringBoot集成Swagger_apache

界面可以改

需要通过ApiInfo.DEFAULT里面的静态方法;
SpringBoot集成Swagger_spring_02

@Configuration
@EnableSwagger2 //开启Swagger2
public class SwaggerConfig {

//配置了Swagger的Docket的bean实例
@Bean
public Docket docket(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo());
}

//配置Swagger 信息 = apiInfo
private ApiInfo apiInfo(){
Contact contact = new Contact("rrr", "http://www.r.com/", "1760@qq.com");

return new ApiInfo(
"Rzk的SwaggerAPI文档",
"书山有路勤为径,学海无涯苦作舟",
"1.0",
"http://www.r.com/",
contact,
"Apache 2.0",
"http://www.apache.org/licenses/LICENSE-2.0",
new ArrayList()
);
}
}

访问

localhost:8080/swagger-ui.html
SpringBoot集成Swagger_spring_03

扫描接口

@Configuration
@EnableSwagger2 //开启Swagger2
public class SwaggerConfig {

//配置了Swagger的Docket的bean实例
@Bean
public Docket docket(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
//RequestHandlerSelectors,配置要烧苗接口的方式
//basePackage;指定要扫描的包
//any():扫描全部
//none():不扫描
//withClassAnnotation():扫描类上的注解,参数是一个注解的反射对象
//withMethodAnnotation():扫描方法上的注解
.apis(RequestHandlerSelectors.basePackage("com.rzk.swagger.controller"))
.paths(PathSelectors.ant("/rzk/**"))
.build()
;
}

//配置Swagger 信息 = apiInfo
private ApiInfo apiInfo(){
Contact contact = new Contact("楷哥", "http://www.ruizhukai.com/", "1769073060@qq.com");

return new ApiInfo(
"Rzk的SwaggerAPI文档",
"书山有路勤为径,学海无涯苦作舟",
"1.0",
"http://www.ruizhukai.com/",
contact,
"Apache 2.0",
"http://www.apache.org/licenses/LICENSE-2.0",
new ArrayList()
);
}
}


如果加上 enable(false) 页面就访问不了
是否启动swagger 如果false就不能访问


希望在Swagger在生产环境中使用,在发布的使用不使用?

  • 判断是不是生产环境
  • 注入enable()

新建三个配置类

内容如下:
SpringBoot集成Swagger_spring_04

SwaggerConfig配置类

@Configuration
@EnableSwagger2 //开启Swagger2
public class SwaggerConfig {

//配置了Swagger的Docket的bean实例
@Bean
public Docket docket(Environment environment){

//设置要显示的Swagger环境
Profiles profiles= Profiles.of("dev");
//通过environment.acceptsProfiles 判断是否处在自己设定的环境当中 获取项目的环境
boolean flag = environment.acceptsProfiles(profiles);


return new Docket(DocumentationType.SWAGGER_2)

.enable(flag)
.select()

//RequestHandlerSelectors,配置要烧苗接口的方式
//basePackage;指定要扫描的包
//any():扫描全部
//none():不扫描
//withClassAnnotation():扫描类上的注解,参数是一个注解的反射对象
//withMethodAnnotation():扫描方法上的注解
.apis(RequestHandlerSelectors.basePackage("com.rzk.swagger.controller"))
.paths(PathSelectors.ant("/rzk/**"))
.build()
;
}
}


启动项目,访问8082端口
SpringBoot集成Swagger_apache_05


配置多个API文档的 分组


.groupName("文档一")


SpringBoot集成Swagger_实体类_06

配置多个

@Bean
public Docket docket1(){
return new Docket(DocumentationType.SWAGGER_2)
.groupName("文档二")
;
}
@Bean
public Docket docket2(){
return new Docket(DocumentationType.SWAGGER_2)
.groupName("文档三")
;
}
@Bean
public Docket docket3(){
return new Docket(DocumentationType.SWAGGER_2)
.groupName("文档四")
;
}
@Bean
public Docket docket4(){
return new Docket(DocumentationType.SWAGGER_2)
.groupName("文档五")
;
}

SpringBoot集成Swagger_实体类_07

如果controller返回实体类,会被扫描到Swagger里面

//只要我们的接口中,返回值中存在实体类,他就会被扫描到Swagger
@PostMapping(value = "/user")
public User user(){
return new User();
}
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private int id;
private String name;
private String pwd;
private String perms;
}


查看
SpringBoot集成Swagger_spring_08


在实体类加上api文档注释


给实体类加注释 @ApiModel
字段上加注释 @ApiModelProperty
给方法加上注释,而不是类上:@ApiOperation("user控制类")


@ApiModel("用户实体类")
public class User {
@ApiModelProperty("用户Id")
private int id;
@ApiModelProperty("用户名")
private String name;
@ApiModelProperty("用户密码")
private String pwd;
@ApiModelProperty("用户权限")
private String perms;
}

查看

SpringBoot集成Swagger_实体类_09

在Swagger上测试

//只要我们的接口中,返回值中存在实体类,他就会被扫描到Swagger
@ApiOperation("user控制类")
@PostMapping(value = "/user")
public User user(@ApiParam("用户") User user){
return new User();
}

找到Post的/user进行测试

SpringBoot集成Swagger_实体类_10

SpringBoot集成Swagger_apache_11


如果有错误,会很清楚的标记出错误


总结

1.可以通过Swagger给一些比较难理解的属性或者接口,增加注释信息
2.接口文档实时更新
3.可以在线测试