介绍
Swagger是一款RESTFUL接口的文档在线自动生成+功能测试功能软件。
Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务
这里主要介绍Swagger 3.0
使用
- 导入依赖
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>3.0.0</version>
</dependency>
- 书写配置类
@Configuration
@EnableOpenApi //开启swagger
public class Swagger {
@Bean
public Docket docket(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.enable(true)
.groupName("组名")
.select()
.apis(RequestHandlerSelectors.basePackage("controller包所在的路径"))
.paths(PathSelectors.any()) //接口访问路径筛选
.build();
}
@SuppressWarnings("all")
public ApiInfo apiInfo(){
return new ApiInfoBuilder()
.title("Title")
.description("swagger")
.version("1.0")
//.termsOfServiceUrl("termsOfServiceUrl")
.contact(new Contact("name","url","email"))
.build();
}
}
- 拦截器排除Swagger
excludePathPatterns("/swagger**/**",
"/webjars/**",
"/v3/**",
"/doc.html");
- 启动类添加注解
@ComponentScan("xxxx.xxx.xxxx")
- 适配高版本Spring Boot
spring:
mvc:
pathmatch:
matching-strategy: ant_path_matcher
Controller类注解
-
**@Api(tags = “Test类”):**用于类上,为该类进行注释,注意参数必须是“tags”才会有效(默认也不行,因为默认是第一个字段value)
-
**@ApiOperation(“你好 世界”):**用于方法上,为该接口进行注释
-
**@ApiImplicitParams():**用于方法上,里面还应使用数组的@ApiImplicitParam注解,其作用是为接口字段进行注释,应注意的是,如果接口需要的字段是pojo类型,则该接口就不能使用@ApiImplicitParams注解,如果想为相应字段写注释,则应该在相应的pojo类中使用@ApiModel与@ApiModelProperty
@ApiImplicitParams:用在请求的方法上,表示一组参数说明
@ApiImplicitParam:用在@ApiImplicitParams注解中,指定一个请求参数的各个方面
name:参数名
value:参数的汉字说明、解释
required:参数是否必须传
paramType:参数放在哪个地方
· header --> 请求参数的获取:@RequestHeader
· query --> 请求参数的获取:@RequestParam
· path(用于restful接口)--> 请求参数的获取:@PathVariable
· body(不常用)
· form(不常用)
dataType:参数类型,默认String,其它值dataType="Integer"
defaultValue:参数的默认值
Pojo类注解
- **@ApiModel(“用户”):**用于类上,为该model进行注释
- **@ApiModelProperty(“用户名”):**用于字段上,为该model的字段进行注释
皮肤
这里推荐knife4j
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-ui</artifactId>
<version>3.0.3</version>
</dependency>