1、 介绍
一个用于生成在线API接口文档的小框架
2、作用
①便于前后端开发人员协同开发
②提供在线测试入口,功能类似于Postman
3、Knife4j
SpringMVC集成Swagger,生成API接口文档的增强方案,已经被Spring官方集成
4、使用
4.1、导入依赖
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
</dependency>
4.2、配置类
WebMvcConfiguration
① Swagger
/**
* 通过knife4j生成接口文档
* @return
*/
@Bean
public Docket docket() {
ApiInfo apiInfo = new ApiInfoBuilder()
.title("xxx项目接口文档")
.version("2.0")
.description("xxx项目接口文档")
.build();
Docket docket = new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo)
.select()
.apis(RequestHandlerSelectors.basePackage("com.sky.controller"))
.paths(PathSelectors.any())
.build();
return docket;
}
②静态资源映射
/**
* 设置静态资源映射
* @param registry
*/
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}
4.3 、测试
①启动项目
②http://localhost:8080/doc.html
5、常用注解
①@Api
用在类上,例如Controller,表示对类的说明
属性tags:描述接口
②@ApiOperation
用在方法上,例如Controller的方法,说明方法的用途、作用
③@ApiImplicitParams
写在Controller方法上,用于说明方法参数【是多个】
内部可以使用 @ApiImplicitParam 来指定具体的参数
(属性name:参数名称,属性paramType:参数类型,如果是json,写body)
④@ApiModel
用在类上,例如PO、DTO、VO
PO:普通Java对象,一般是指映射数据库表的Java实体
DTO:文档传输对象,一般是指前端传递到后端的数据,或者服务之间有参数传递
VO:视图对象,一般是指后端返回给前端的数据
属性description:描述实体
⑤@ApiModelProperty
用在属性上,描述属性信息