swagger特性
- Restful Api文档在线自动生成工具=> Api文档与Apl定义同步更新
- 直接运行即可在线测试Api接口
- 几乎支持全部语言
官网:API Documentation & Design Tools for Teams | Swagger
在springboot项目中集成swagger
1.新建一个springboot(Web)项目
2.导入相关依赖(我们这里导入2.9.2的版本)
1)springfox-swagger2
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
2)springfox-swagger-ui
<!-- 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>
3.配置Swagger->config
@Configuration
@EnableSwagger2 //开启swagger
public class SwaggerConfig {
}
4.测试运行: http://localhost:8300/swagger-ui.html
注:若访问swagger-ui.html页面时,出现No handler found for GET /swagger-ui.html无法访问的问题
原因:
这个错误,是因为资源映射问题导致的。我们在访问swagger-ui.html页面时,这个swagger-ui.html相关的所有前端静态文件都在springfox-swagger-ui-2.9.2.jar里面。目录如下:
而Spring Boot自动配置本身不会自动把/swagger-ui.html这个路径映射到对应的目录META-INF/resources/下面,所以我们访问不到。
解决方法:
需要添加一个配置类(或者在你原有的webMvcConfig中overwrite这个addResourceHandlers方法,即可解决。
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
Swagger的配置
在刚刚编写的SwaggerConfig类中配置swagger的Apl文档的基本信息
@Configuration
@EnableSwagger2 //开启swagger
public class SwaggerConfig {
//配置swagger的docket实例
@Bean
public Docket docket(){
return new Docket(SWAGGER_2)//版本为swagger2
.groupName("szny")
.apiInfo(apiInfo()); //api信息
}
//配置swagger的api信息
private ApiInfo apiInfo(){
//作者信息
Contact contact = new Contact("yk", "https://blog.csdn.net/weixin_72076848", "xx");
return new ApiInfo("数字农业系统的swagger文档",
"数字农业系统",
"1.0",
"https://blog.csdn.net/weixin_72076848",
contact ,
"Apache 2.0",
"http://www.apache.org/licenses/LICENSE-2.0",
new ArrayList());
}
}
配置swagger的扫描接口
//配置swagger的docket实例
@Bean
public Docket docket(){
return new Docket(SWAGGER_2)//版本为swagger2
.groupName("szny")
.apiInfo(apiInfo())
.select()
//RequestHandlerSelectors:配置要扫描接口的方式
//basePackage:扫描指定包
//any:扫描全部 none:不扫描
.apis(RequestHandlerSelectors.basePackage("com.jpzh.bis.controller"))
//ant:过滤指定路径 any:过滤全部 none:不过滤
//.paths(PathSelectors.any())
.build(); //api信息
}
swagger的分组功能,适用于项目组内的协同开发
@Bean
public Docket docket1(){
return new Docket(SWAGGER_2)
.groupName("A");
}
@Bean
public Docket docket2(){
return new Docket(SWAGGER_2)
.groupName("B");
}
@Bean
public Docket docket3(){
return new Docket(SWAGGER_2)
.groupName("B");
}
ok,学到这里差不多就可以进行简单的swagger集成了,快去试试吧!