1、Swagger
- 号称世界上最流行的Api框架
- RestFul Api文档在线生成工具
- 直接运行,可有在线测试Api接口
- 支持多种语言(java,Php……)
官网地址:?API Documentation & Design Tools for Teams | Swagger
在项目中使用Swagger需要Springfox;
SpringBoot集成Swagger??
只需勾选web依赖
- ?配置Swagger? ?==>? ?编写config
import org.springframework.context.annotation.Configuration;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2 //开启Swagger2
public class SwaggerConfig {
}
http://localhost:8080/swagger-ui.html
?配置Swagger
?Swagger的bean实例Docket;
package com.jun.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;
@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.kuangstudent.com/", "642664941@qq.com");
return new ApiInfo(
"尘的SwaggerAPI文档",
"没心没肺",
"v1.0",
"https://blog.kuangstudent.com/",
contact,
"Apache 2.0",
"http://www.apache.org/licenses/LICENSE-2.0",
new ArrayList());
}
}
运行结果
配置扫描接口
//配置了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.jun.swagger.controller"))
//paths():过滤路径
.paths(PathSelectors.ant("/kuang/**"))
.build();
配置接口是否启动Swagger
apiInfo(apiInfo())
//enable():是否启动Swagger,如果为false,则Swagger不能在浏览器中访问
.enable(false)
?如何让自己的Swagger只在生产环境中使用,在发布的时候不使用?
- 判断是不是生产环境? ?flag=false
- 注入enable(flag)
在docket方法中,添加一个参数——Environment
//设置要显示的swagger环境
Profiles profiles = Profiles.of("dev","test");
//通过environment.accepteProfiles判断是否处在自己设定的环境当中
boolean flag = environment.acceptsProfiles(profiles);
创建其他两个配置文件,一个为application-dev.properties,
另一个为application-pro.properties
application.properties
# 应用名称
spring.application.name=swagger-demo
# 应用服务 WEB 访问端口
server.port=8080
#需要激活的配置文件
spring.profiles.active=dev
application-dev.properties
# 应用名称
spring.application.name=swagger-demo
# 应用服务 WEB 访问端口
server.port=8081
application-pro.properties
# 应用名称
spring.application.name=swagger-demo
# 应用服务 WEB 访问端口
server.port=8081
配置API文档分组
.groupName("狂神")
如何配置多个分组:多个Docket实例即可
@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 docket4(){
return new Docket(DocumentationType.SWAGGER_2).groupName("D");
}
总结
- 我们可有通过Swagger给一些比较难理解的属性或者接口,增加注释信息
- 接口文档实时更新
- 可以在线测试
Swagger是一个优秀的工具,几乎所有的大公司都有使用它 【注意点】在正式发布的时候,关闭Swagger!!!出于安全考虑,而且节省运行的内存;
|