介绍
Swagger接口文档是一种自动生成、描述、调用和可视化的RESTful风格Web服务接口文档的工具。它通过一系列的规范和自动化工具,极大地简化了后端开发人员与前端开发人员之间的协作。
依赖
<!--swagger-->
<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>3.0.0</version>
</dependency>
<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>3.0.0</version>
</dependency>
<dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</version>
</dependency>
配置类
@EnableSwagger2//开启Swagger2
@Configuration
@EnableWebMvc
public class SwaggerConfig {@Beanpublic Docket docket(){return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.basePackage("com.mybatis.mybatisplusdemo.controller")).build();}
}
启动项目
访问:http://127.0.0.1:8080/swagger-ui/index.html
进入文档
以上就安装好了Swagger
修改配置类
@EnableSwagger2//开启Swagger2
@Configuration
@EnableWebMvc
public class SwaggerConfig {@Beanpublic Docket docket(){Contact contact = new Contact("生产队的驴","www.baidu.com","66666@qq.com");//作者信息return new Docket(DocumentationType.SWAGGER_2).apiInfo(new ApiInfo("学生管理系统API文档","基于Springboot的学生管理系统","v2.0","http://local:8080",contact,"ABC-6699","www.baidu.com",new ArrayList<>())).select().apis(RequestHandlerSelectors.basePackage("com.mybatis.mybatisplusdemo.controller")) //指定扫描的包 只显示该包下的接口 RequestHandlerSelectors:指定扫描的方式.build();}
}
- RequestHandlerSelectors.basePackage 指定扫描某个包下的接口 一般使用这个
- RequestHandlerSelectors.asy 扫描全部
- RequestHandlerSelectors.none 什么都不扫描
- RequestHandlerSelectors.withMethodAnnotation(RestController.class || GetMapping.class) 扫描类上的注解 只扫描类上有 RestController 注解
- RequestHandlerSelectors.withMethodAnnotation() 扫描方法上的注解
过滤接口
有的接口不需要存在API文档里,可以过滤掉
.paths(PathSelectors.ant("/user/**"))
生产和开发环境
要求API文档只在开发环境中使用,项目上线不显示。
@Bean
public Docket docket(Environment environment){Profiles profiles =Profiles.of("dev");//获取环境Boolean isOpen= environment.acceptsProfiles(profiles); //是否处于开发环境return new Docket(DocumentationType.SWAGGER_2)..select().enable(isOpen) //是否开启 .build()}
分组
可以构建多个对象 进行分组:如 用户 数据 钱包
.build()
.groupName("用户");
实体类注解
@Data
@ApiModel("部门")
public class Emp {@ApiModelProperty("姓名")private String name;
}
只要返回的对象中是实体类就会被扫描到
Controlle注解
@RestController
@RequestMapping("/emp")public class EmpController {@PostMapping()@ApiOperation("添加员工")public Result add(@RequestBody Emp emp){Boolean isSuccess= empService.save(emp);return Result.success("操作成功",isSuccess);}}
不在文档显示
@RestController
@RequestMapping("/emp")
@ApiIgnore
public class EmpController {
....
}