Featured image of post Swagger

Swagger

介绍

Swagger是一款RESTFUL接口的文档在线自动生成+功能测试功能软件

Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务

这里主要介绍Swagger 3.0

使用

  1. 导入依赖
<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>
  1. 书写配置类
@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();
    }
}
  1. 拦截器排除Swagger
excludePathPatterns("/swagger**/**",
                        "/webjars/**",
                        "/v3/**",
                        "/doc.html");
  1. 启动类添加注解
@ComponentScan("xxxx.xxx.xxxx")
  1. 适配高版本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>
渝ICP备2022006471
Built with Hugo
主题 StackJimmy 设计