• 在maven项目的pom.xml中引入Knife4j的依赖包,代码如下:



<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>2.0.7</version>
</dependency>


 



  • 创建Swagger配置WebMvcConfig.java依赖,代码如下:



@Configuration
@EnableSwagger2WebMvc
public class Knife4jConfiguration {

@Bean(value = "defaultApi2")
public Docket defaultApi2() {
Docket docket=new Docket(DocumentationType.SWAGGER_2)
.apiInfo(new ApiInfoBuilder()
.title("小鱼访客API文档")
.description("小鱼访客API文档")
.termsOfServiceUrl("http://www.xx.com/")
.contact("xx@qq.com")
.version("1.0")
.build())
//分组名称
.groupName("2.X版本")
.select()
//这里指定Controller扫描包路径
.apis(RequestHandlerSelectors.basePackage("com.github.xiaoymin.knife4j.controller"))
.paths(PathSelectors.any())
.build();
return docket;
}
}


 



  • IndexController.java包含一个简单的RESTful接口,代码示例如下:



@Api(tags = "首页模块")    //模块描述
@RestController
public class IndexController {

@ApiImplicitParam(name = "name",value = "姓名",required = true) //参数描述
@ApiOperation(value = "向客人问好") //接口描述

@GetMapping("/sayHi")
public ResponseEntity<String> sayHi(@RequestParam(value = "name")String name){
return ResponseEntity.ok("Hi:"+name);
}
}


 




即可访问到这个自动化api接口文档


 



  • 写在Controller里的常用注解


@Api():用在请求的类上,表示对类的说明,也代表了这个类是swagger2的资源


参数




tags="说明该类的作用,参数是个数组,可以填多个。"
value="该参数没什么意义,在UI界面上不显示,所以不用配置"
description = "用户基本信息操作"


 



@ApiOperation():用于方法,表示一个http请求访问该方法的操作


参数




value="方法的用途和作用"    
notes="方法的注意事项和备注"
tags:说明该方法的作用,参数是个数组,可以填多个。
格式:tags={"作用1","作用2"}


 



@ApiImplicitParam:用于方法,表示单独的请求参数




name="参数ming" 
value="参数说明"
dataType="数据类型"
paramType="query" 表示参数放在哪里
· header-->请求参数的获取:@RequestHeader(代码中接收注解)
· query-->请求参数的获取:@RequestParam(代码中接收注解)
· path(用于restful接口)-->请求参数的获取:@PathVariable(代码中接收注解)
· body-->请求参数的获取:@RequestBody(代码中接收注解)
· form(不常用)
defaultValue="参数的默认值"
required="true" 表示参数是否必须传


 


@ApiImplicitParams:用在请求的方法上,包含多@ApiImplicitParam


一般写成如下




@ApiImplicitParams({
@ApiImplicitParam(),
@ApiImplicitParam()
})


 



@ApiModel():用于响应实体类上,用于说明实体作用




description="描述实体的作用"


 



@ApiModelProperty:用在属性上,描述实体类的属性




value="用户名"  描述参数的意义
name="name" 参数的变量名
required=true 参数是否必选


 


@ApiParam():用于方法,参数,字段说明 表示对参数的要求和说明



name="参数名称"
value="参数的简要说明"
defaultValue="参数默认值"
required="true" 表示属性是否必填,默认为false


 


@ApiResponses:用于请求的方法上,根据响应码表示不同响应


  一个@ApiResponses包含多个@ApiResponse


@ApiResponse:用在请求的方法上,表示不同的响应


参数:



code="404"    表示响应码(int型),可自定义
message="状态码对应的响应信息"


 



@ApiIgnore():用于类或者方法上,不被显示在页面上


@Profile({"dev", "test"}):用于配置类上,表示只对开发和测试环境有用