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)
})

 

 

posted @ 2021-07-20 11:12  coder_Fish  阅读(811)  评论(0)    收藏  举报