了解Swagger之前,需要先知道什么是前后端分离
及时协商,尽早解决问题
,就会导致项目延期Swagger官网
官网界面
SpringBoot-Web
项目,导入相关依赖注意事项:
<dependency>
<groupId>io.springfoxgroupId>
<artifactId>springfox-swagger2artifactId>
<version>2.9.2version>
dependency>
<dependency>
<groupId>io.springfoxgroupId>
<artifactId>springfox-swagger-uiartifactId>
<version>2.9.2version>
dependency>
扩展,一个hello程序有两个请求,一个是
SpringBoot
项目默认的/error
image-20200611133103333
@RestController
public class HelloController {
/**
* 测试Controller
*
* @return
*/
@GetMapping("/hello")
public String hello() {
return "你好呀!!!Swagger";
}
}
Swagger
,新建SwaggerConfig
@Configuration // 标识配置类
@EnableSwagger2 // 开启Swagger
public class SwaggerConfig {
}
唯一地址:
http://localhost:8080/swagger-ui.html
首页信息
SwaagerConfig
package com.mobai.swagger.config;
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;
/**
* Software:IntelliJ IDEA 2020.1 x64
* Author: MoBai·杰
* Date: 2020/6/11 13:33
* ClassName:SwaggerConfig
* 类描述:Swagger配置类
*/
@Configuration // 标识配置类
@EnableSwagger2 // 开启Swagger
public class SwaggerConfig {
/**
* 配置了Swagger的Docket的Bean实例
*
* @return
*/
@Bean
public Docket docket() {
return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo());
}
/**
* 配置Swagger信息
*
* @return
*/
private ApiInfo apiInfo() {
// 配置作者信息
Contact contact = new Contact("墨白",
"https://www.mobaijun.com",
"mobaijun8@163.com");
// 配置API文档标题
return new ApiInfo("框架师Api",
// API文档描述
"Api Documentation",
// API版本号
"1.0",
// 配置URL(公司官网/blog地址)
"https://www.mobaijun.com",
// 作者信息
contact,
// 以下内容默认即可
"Apache 2.0",
"http://www.apache.org/licenses/LICENSE-2.0",
new ArrayList());
}
}
Docket.select();
SawggerConfig
配置类完善配置扫描接口的参数 /**
* 配置了Swagger的Docket的Bean实例
*
* @return
*/
@Bean
public Docket docket() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
// 配置扫描接口
.select()
/*
*RequestHandlerSelectors,配置要扫描接口的方式
* 参数说明:
* basePackage:基于包扫描
* class:基于类扫描
* any():扫描全部
* none():全部都不扫描
* withMethodAnnotation:通过方法的注解扫描
* // withMethodAnnotation(GetMapping.class))
* withClassAnnotation:通过类的注解扫描
*/
.apis(RequestHandlerSelectors.basePackage("com.mobai.swagger.controller"))
// .paths()过滤,不扫描哪些接口
.paths(PathSelectors.any())
.build();
}
Swagger
启动/**
* 配置了Swagger的Docket的Bean实例
*
* @return
*/
@Bean
public Docket docket() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
// 配置Swagger是否启动,默认:true
.enable(false)
// 配置扫描接口
.select()
.apis(RequestHandlerSelectors.basePackage("com.mobai.swagger.controller"))
.paths(PathSelectors.any())
.build();
}
小测试:如果有一个需求,需要你判断在生成环境中使用,在发布的时候不使用
false
application-dev.properties生产环境配置和application-pro.properties发布环境配置
application.properties
环境配置添加# 开启profiles.active监听,dev测试环境,pro发布环境
spring.profiles.active=dev
server.port=8081
server.port=8082
SwaggerConfig
配置类判断当前环境/**
* 配置了Swagger的Docket的Bean实例
*
* @return
*/
@Bean
public Docket docket(Environment environment) {
// 设置要显示的Swagger环境
Profiles profiles = Profiles.of("dev", "test");
// 通过environment.acceptsProfiles();判断自己是否在自己设定换的环境当中
boolean flag = environment.acceptsProfiles(profiles);
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
// 监听自己设置的环境
.enable(flag)
// 配置扫描接口
.select()
.apis(RequestHandlerSelectors.basePackage("com.mobai.swagger.controller"))
.paths(PathSelectors.any())
.build();
}
.groupName()
/**
* 配置了Swagger的Docket的Bean实例
*
* @return
*/
@Bean
public Docket docket(Environment environment) {
// 设置要显示的Swagger环境
Profiles profiles = Profiles.of("dev", "test");
// 通过environment.acceptsProfiles();判断自己是否在自己设定换的环境当中
boolean flag = environment.acceptsProfiles(profiles);
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
// 配置分组
.groupName("墨白小组")
// 监听自己设置的环境
.enable(flag)
// 配置扫描接口
.select()
.apis(RequestHandlerSelectors.basePackage("com.mobai.swagger.controller"))
.paths(PathSelectors.any())
.build();
}
image-20200611145705157
@Configuration // 标识配置类
@EnableSwagger2 // 开启Swagger
public class SwaggerConfig {
/**
* 添加A组
* 每个组各司其职
*
* @return
*/
@Bean
public Docket docket1() {
return new Docket(DocumentationType.SWAGGER_2)
.groupName("A");
}
/**
* 添加B组
*
* @return
*/
@Bean
public Docket docket2() {
return new Docket(DocumentationType.SWAGGER_2)
.groupName("B");
}
/**
* 添加C组
*
* @return
*/
@Bean
public Docket docket3() {
return new Docket(DocumentationType.SWAGGER_2)
.groupName("C");
}
/**
* 配置了Swagger的Docket的Bean实例
*
* @return
*/
@Bean
public Docket docket(Environment environment) {
// 设置要显示的Swagger环境
Profiles profiles = Profiles.of("dev", "test");
// 通过environment.acceptsProfiles();判断自己是否在自己设定换的环境当中
boolean flag = environment.acceptsProfiles(profiles);
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
// 配置分组
.groupName("墨白小组")
// 监听自己设置的环境
.enable(flag)
// 配置扫描接口
.select()
.apis(RequestHandlerSelectors.basePackage("com.mobai.swagger.controller"))
.paths(PathSelectors.any())
.build();
}
image-20200611150302823
@ApiModel("用户实体类") // 添加注释
public class User {
// 添加注释
@ApiModelProperty("年龄")
private Integer age;
@ApiModelProperty("姓名")
private String name;
@ApiModelProperty("账号")
private String username;
@ApiModelProperty("密码")
private String password;
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
效果图
@ApiModel("注释")
:实体类添加注释@ApiModelProperty("注释")
:给实体类属性添加注释@ApiOperation("注释")
给接口(Controller)方法添加注释,放在方法上@ApiParam("")
给方法的参数添加注释@Api("")
给类添加注释package com.mobai.swagger.controller;
import com.mobai.swagger.pojo.User;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* Software:IntelliJ IDEA 2020.1 x64
* Author: MoBai·杰
* Date: 2020/6/11 13:25
* ClassName:HelloController
* 类描述: 测试类
*/
@ApiOperation("")
@RestController
public class HelloController {
/**
* 测试Controller
*
* @return
*/
@GetMapping("/hello")
public String hello() {
return "你好呀!!!Swagger";
}
/**
* 只要我们的接口中,返回值存在实体类,Swagger就会扫描到
*
* @return
*/
@PostMapping("/user")
public User user() {
return new User();
}
@ApiOperation("Post测试类")
@PostMapping(value = "/post")
public User post(@ApiParam("用户对象") User user) {
return user;
}
}
@Configuration
注解,标识配置类@EnableSwagger2
注解开启SwaggerSwagger2
Swagger-ui
Swagger
依赖Swagger
配置类Swagger
的Docket
的Bean
实例Swagger
信息