1.Springboot整合Swagger2
1.1.pom加swagger依赖
1.2.添加swagger配置类
@Configuration
@EnableSwagger2
@EnableSwaggerBootstrapUI
//@ConditionalOnExpression("${swagger.enable:true}")
public classSwagger2 {
// @Override
// public voidaddResourceHandlers(ResourceHandlerRegistry registry) {
// registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
// registry.addResourceHandler("/webjars*").addResourceLocations("classpath:/META-INF/resources/webjars/");
// }
@Value("${swagger.enable:true}")
private String enable;
@Value("${swagger.basePackage}")
private String basePackage;
@Bean
public Docket createRestApi()
{
Predicateselector= PathSelectors.none();
if("true".equals(enable)) {
selector=PathSelectors.any();
}
//定义全局参数
Listpars = new ArrayList<>();
ParameterBuildertoken = new ParameterBuilder();
token.name("token").description("token").modelRef(new ModelRef("string")).parameterType("header").required(false).build();
pars.add(token.build());
return newDocket(DocumentationType.SWAGGER_2)
.globalOperationParameters(pars) // 全局参数
.groupName("demo01")//指定分组
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage(basePackage))
// .paths(PathSelectors.any())
.paths(selector)
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("SpringBoot测试使用 Swagger2 构建RESTful API")
.description("springboot demo 接口文档")
.version("1.0")
.build();
}
}
1.3.加上swagger启用禁用开关
新建application.properties文件
#swagger启用禁用标识true:启用
swagger.enable=true
#swagger扫描需生成文档的包路径
swagger.basePackage=com.tjc.springbootDemo.controller
1.4.Swagger具体注释用法
https://blog.csdn.net/xiaojin21cen/article/details/78654652
1.5本地访问swagger文档
访问原生swagger地址:http://localhost:8080/swagger-ui.html#/
访问bootStrap-swagger地址:http://localhost:8080/doc.html
访问json文件数据地址:http://localhost:8083/v2/api-docs
1.6.在线访问swagger接口
https://www.cnblogs.com/vipstone/p/9841716.html
1.7.demo源码访问地址
https://gitee.com/JasonTran/swagger2-springbootDemo.git
2.Springmvc整合Swagger2
2.1.pom加依赖
2.2.添加swagger配置类
@Configuration
@EnableSwagger2
@EnableWebMvc
@EnableSwaggerBootstrapUI
@PropertySource(value="classpath:swagger.properties")
public classSwagger2 {
@Value("${swagger.enable:true}")
private String enable;
@Value("${swagger.basePackage}")
private String basePackage;
@Bean
public Docket createRestApi()
{
Predicateselector= PathSelectors.none();
//启用swagger
if("true".equals(enable)) {
selector=PathSelectors.any();
}
// //定义全局参数
// List pars = new ArrayList();
// ParameterBuilder token = newParameterBuilder();
// token.name("token").description("token").modelRef(newModelRef("string")).parameterType("header").required(false).build();
// pars.add(token.build());
return newDocket(DocumentationType.SWAGGER_2)
// .globalOperationParameters(pars)//全局参数
.groupName("demo01")//指定分组
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage(basePackage))
// .paths(PathSelectors.any())
.paths(selector)
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("SpringMvc测试使用 Swagger2 构建RESTful API")
.description("springmvc demo 接口文档")
.version("1.0")
.build();
}
}
2.3. 创建swagger.properties文件
#swagger启用禁用标识true:启用
swagger.enable=true
#swagger扫描需生成文档的包路径
swagger.basePackage=com.tjc.springmvcDemo.controller
2.4.springmvc初始化文件添加扫包配置
2.5.Swagger具体注释用法
https://blog.csdn.net/xiaojin21cen/article/details/78654652
2.6.在线访问swagger接口
https://www.cnblogs.com/vipstone/p/9841716.html
2.7.demo源码访问地址
https://gitee.com/JasonTran/swagger2-springmvcDemo.git
3.问题整理
3.1.项目中拦截器,过滤器拦截了swagger路径
解决方案:剔除/swagger-resources,/webjars/,/v2/,/doc.html/等路径
.excludePathPatterns("/swagger-resources/**","/webjars/**","/v2/**","/doc.html/**");
3.2. guava-${version}.jar包冲突
解决方案:在maven仓库查找最新guava jar包;
3.3.分布式聚合文档结合eureka注册中心发现服务,zuul解决浏览器跨域,通过调用swagger的/v2/doc-api接口获取文档json数据实现文档聚合管理