1. 添加依赖
<dependencies>
<!--这两个依赖是swagger所需要的-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<!--ui依赖-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>2.0.7</version>
</dependency>
</dependencies>
2. 添加配置类
import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
// 开启swagger2
@EnableSwagger2
// 开启knife4j
@EnableKnife4j
public class Swagger2Conf {
// 添加bean,代表一个组的接口文档,可以有多个组,每个组扫描指定包下的文档
@Bean
public Docket commonDocket() {
return new Docket(DocumentationType.SWAGGER_2) // 选择swagger2版本
.groupName("分组名称") // 分组名称
.apiInfo(apiInfo("标题", "描述"))
.select() // 启动 api 选择构建器
// 哪些包路径下属于通用开发接口文档,改成你要扫描的controller包名
.apis(RequestHandlerSelectors.basePackage("com.atguigu.gulimall.product.controller"))
// 路径筛选 PathSelectors.any() 匹配所有接口,也可以自定义匹配哪些接口
.paths(PathSelectors.any())
// 构建
.build();
}
private ApiInfo apiInfo(String title, String description) {
Contact contact = new Contact("填联系人姓名", "填网站地址", "填邮箱");
return new ApiInfoBuilder()
// 标题
.title(title)
// 描述
.description(description)
// 服务条款链接
.termsOfServiceUrl("服务条款链接")
// 联系人
.contact(contact)
// 认证许可
.license("Apache License Version 2.0")
// 认证许可链接
.licenseUrl("https://github.com/springfox/springfox/blob/master/LICENSE")
// 版本
.version("2.0")
.build();
}
}
3. 通过端口访问
ip:端口号/doc.html
4. 注解说明
@Api | 用在Controller类上,对类的说明 |
@ApiModel | 用在实体类上,表示一个返回响应数据的信息 |
@ApiModelProperty | 用在属性上,描述响应类的属性 |
@ApiOperation | 用在请求方法上 |
@ApiImplicitParams | 用在请求的方法上,表示一组参数说明 |
@ApiImplicitParam | 用在@ApiImplicitParams注解中,指定一个请求参数的各个方面 |
示例
@RestController
@RequestMapping("/user")
@Api(tags = "用户控制器")
public class UserController {
@ApiImplicitParams({
@ApiImplicitParam(name = "pageNum", value = "页码",
required = true, type = "Integer"),
@ApiImplicitParam(name = "pageSize", value = "每页条数",
required = true, type = "Integer"),
})
@ApiOperation(value = "分页查询用户信息")
@GetMapping(value = "page/{pageNum}/{pageSize}")
public String findByPage(@PathVariable Integer pageNum,
@PathVariable Integer pageSize) {
return "OK";
}
}