SwaggerUI

本文最后更新于:4 个月前

  • SwaggerUI简述

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

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

    总体目标是使客户端和文件系统作为服务器以同样的速度来更新。

    文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步

  • Spring Boot Maven 依赖

        <!--	swagger2	-->
    <!-- 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>
    <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.9.2</version>
    </dependency>
  • 配置

    在configuration包下,新建SwaggerUIConfiguration

    /*在类上加入注解*/
    @EnableSwagger2
    @Configuration
    /* 控制swagger是否开启,当application.properties设置中swagger.enable=true,即符合havingValue的期望值时配置生效 */
    @ConditionalOnProperty(prefix = "swagger", value = {"enable"}, havingValue = "true" )
    public class SwaggerUIConfiguration{
    
    @Bean
        public Docket createRestfulApi(){
            return new Docket(DocumentationType.SWAGGER_2)
            .apiInfo(apiInfo())
            .select()
            .apis(RequestHandlerSelectors.basePackage("com.example"))
            .paths(PathSelectors.any())
            .build();
        }
    
        public ApiInfo apiInfo(){
            return new ApiInfoBuilder()
            .titile("title")
            .description("====================\n"
            +"项目名称:xxx\n"
            +"项目分支:xxx\n"
            +"项目成员:xxx\n"
                +"====================\n"
                +"项目简介:后端采用Spring Boot + Mybatis框架,使用Mysql数据库\n"
            +"====================\n"
            +"注意事项:\n"
            +"1. 后端服务端口号:xxx\n"
            +"2. develop分支为开发版本,master分支为稳定版本\n"
            +"3. 每次提交认真写git commit\n\n"
            +"====================\n")
            .termsOfServiceUrl("")
            .version("1.0")
            .build();
        }
    }
  • 注解介绍

注解 参数 说明
@Api 用在Contoller控制器类上,标志这个类是Swagger的资源
value [没有效果]
tags 控制器说明
@ApiOperation 用在接口方法上,描述方法的作用
value 方法说明
note 增加说明
@APiImplicitParams 用在接口方法上,包装器,用{}包含多个ApiImplicitParam
@ApiImpicitParam 定义在ApiImplicitParams内 ,描述单个参数的详细信息
ParamType 获取参数的位置
header -> @RequestHeader
query -> @RequestParam
path -> @PathVariable
body: 以流的形式提交,进支持post
form: 以form表单形式提交,仅支持post
name 参数名
dataType 参数的数据类型,有Long 和String,但是用Long会出现格式错误问题,所以数字统一也用String
required 是否为必须参数true/false
value 参数说明
defaultValue 参数默认值
@ApiResponses 用在接口方看法上,用{}包含多个@ApiResonse
@ApiResponse 表示一个错误信息
code 状态码[200、201、403、404、500等]
message 状态信息
@ApiModel 用在类上,描述对象的作用
@ApiModelProperty 描述对象中字段的作用 ,一般用在请求对象或者返回结果对象