Knife4j 集成到Spring Boot框架项目
1. 在maven项目的pom.xml中引入Knife4j的依赖包
<dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> <version>2.0.7</version> </dependency>
2. 创建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; } }
3. 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); } }
4. 启动Spring Boot工程,在浏览器中访问:http://localhost:8088/doc.html
即可访问到这个自动化api接口文档
5. 写在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"}):用于配置类上,表示只对开发和测试环境有用
6. 范例
@ApiOperation("获取活动详细信息") @ApiImplicitParams({ @ApiImplicitParam(name = "Authentication", value = "令牌", paramType = "header", dataTypeClass = String.class, required = true), @ApiImplicitParam(name = "uId", value = "活动ID", paramType = "query", dataTypeClass = String.class, required = true) })