网地址:https://swagger.io/
在项目中使用 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 工程
@RestController
public class HelloController {
@RequestMapping("/hello")
public String Hello() {
return "hello Swagger!";
}
}
配置 Swagger ==> config
@Configuration
@EnableSwagger2 // 开启 Swagger2
public class SwaggerConfig {
}
测试运行:http://localhost:8080/swagger-ui.html
Swagger 的 bean 实例 Docket;
@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("观澄", "https://blog.csdn.net/yemuyouhan", "[email protected]");
return new ApiInfo(
"观澄的 Swagger API 学习文档",
"描述信息:生命不息,学习不止",
"v1.0",
"https://blog.csdn.net/yemuyouhan",
contact,
"Apache 2.0",
"http://www.apache.org/licenses/LICENSE-2.0",
new ArrayList()
);
}
}
Docket.select()
// 配置 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.cheng.controller"))
// paths():过滤什么路径
.paths(PathSelectors.ant("/cheng/**"))
.build();
}
// 配置 Swagger 的 Docket 的 bean 实例
@Bean
public Docket docket() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
// enable:是否启用 Swagger
// true:默认启用
// false:不启用
.enable(false)
.select()
.apis(RequestHandlerSelectors.basePackage("com.cheng.controller"))
// paths():过滤什么路径
.paths(PathSelectors.ant("/cheng/**"))
.build();
}
注:此处使用的 dev 端口是 8081
application-dev.properties
server.port=8081
配置
// 配置 Swagger 的 Docket 的 bean 实例
@Bean
public Docket docket(Environment environment) {
// 设置要显示的 Swagger 环境
Profiles profiles = Profiles.of("dev", "test");
// 通过 environment.acceptsProfiles 判断是否处在自己设定的环境当中
boolean flag = environment.acceptsProfiles(profiles);
System.out.println(flag);
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
// enable:是否启用 Swagger
// true:默认启用
// false:不启用
.enable(flag)
.select()
.apis(RequestHandlerSelectors.basePackage("com.cheng.controller"))
// paths():过滤什么路径
.paths(PathSelectors.ant("/cheng/**"))
.build();
}
设置 dev 环境
application.properties
spring.profiles.active=dev
测试:
注意测试的时候需要将地址中的端口改为 8081:http://localhost:8081/swagger-ui.html
.groupName("分组")
如何配置多个分组?
多个 Docket 实例即可!
@Bean
public Docket docket1(){
return new Docket(DocumentationType.SWAGGER_2).groupName("分组1");
}
@Bean
public Docket docket2(){
return new Docket(DocumentationType.SWAGGER_2).groupName("分组2");
}
@Bean
public Docket docket3(){
return new Docket(DocumentationType.SWAGGER_2).groupName("分组3");
}
实体类
@ApiModel("用户实体类")
public class User {
@ApiModelProperty("用户名")
public String username;
@ApiModelProperty("用户密码")
public String password;
}
controller
@RestController
public class HelloController {
@GetMapping("/hello")
public String Hello() {
return "hello Swagger!";
}
// 只要接口中返回值存在实体类,就会被扫描到 Swagger 中
@PostMapping("/user")
public User user() {
return new User();
}
@ApiOperation("hello2 控制类")
@GetMapping("/hello2")
public String hello2(@ApiParam("用户名") String username) {
return "hello" + username;
}
}
总结:
注意点:在正式发布的时候,关闭 Swagger!!!