springboot集成swagger knife4j 快速入门

449 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

Knife4j快速入门

1.简介

knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案。

特点:简洁、个性化配置、相较于swagger功能增强

官网网站:Knife4j

官方文档:Document

2.快速使用

  • 添加依赖
<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-spring-boot-starter</artifactId>
    <version>3.0.3</version>
</dependency>
  • 添加Knife4j是的配置类
@Configuration
@EnableSwagger2
@EnableKnife4j
public class Knife4jConfiguration {

    @Bean
    public Docket docket() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("包路径 一般为controller包"))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("文档标题")
                .description("文档描述")
                .termsOfServiceUrl("服务条款地址")
                .version("文档版本")
                .license("开源版本号")
                .licenseUrl("开源地址")
                .contact(new Contact("作者名", "作者网址", "作者邮箱"))
                .build();
    }

}
  • 启动程序即可

3.参数说明

@Api():修饰整个类,用在Controller之上

@RestController
@RequestMapping("user")
@Api(tags = "用户接口")
public class UserController {
    
}

@ApiModel():实体类说明

@ApiModelProperty():实体类属性说明

@Data
@Accessors(chain = true)
@ApiModel(value = "用户实体")
public class User implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty("用户名")
    private String name;
    @ApiModelProperty("密码")
    private String password;
    @ApiModelProperty("年龄")
    private int age;
    @ApiModelProperty("描述")
    private String desc;

}

注解说明:

@ApiOperation(value = "方法名字", notes = "功能具体描述")

@ApiImplicitParam:一个请求参数

@ApiImplicitParams:多个请求参数

参数说明:

paramType="body" 代表参数应该放在请求的什么地方:

header-->放在请求头。请求参数的获取:@RequestHeader(代码中接收注解)
query -->用于get请求的参数拼接。请求参数的获取:@RequestParam(代码中接收注解)
path  -->(用于restful接口)-->请求参数的获取:@PathVariable(代码中接收注解)
body  -->放在请求体。请求参数的获取:@RequestBody(代码中接收注解)
form  -->(不常用)

dataType="String" 代表请求参数类型:

Map
String
User
等等...

allowMultiple=true:表示是数组格式的参数

required = true:表示参数是否必须

@RestController
@RequestMapping("user")
@Api(tags = "用户接口")
public class UserController {


    @GetMapping("test1/{value}")
    @ApiOperation(value = "方法名字", notes = "功能具体描述")
    @ApiImplicitParam(name = "参数名字", value = "参数描述", paramType = "path", dataType = "int", allowMultiple = true, required = true)
    public String test1(@PathVariable("value") int value) {
        return "测试Knife4j:" + value;
    }


    @PostMapping("test2")
    @ApiOperation(value = "测试实体参数", notes = "功能具体描述")
    public String test2(@RequestBody User user) {
        return "测试Knife4j:" + user;
    }
}