Springboot引入Knife4j接口文档

发布于:2024-03-13 ⋅ 阅读:(64) ⋅ 点赞:(0)

springboot引入Knife4j接口文档

前言:前后端联调时使用knife4j文档能大大减少沟通成本,为前端测试接口连通性以及接口参数带来很大的方便。

本文档在jdk11,springboot 2.7.17版本下编写

1. 引入依赖

<!--添加Knife4j依赖-->
<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-openapi2-spring-boot-starter</artifactId>
    <version>4.1.0</version>
</dependency>

2. 编写配置类

package com.jankin.applet.system.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;

@Configuration
@EnableSwagger2WebMvc
public class Knife4jConfig {//对于配置类要求可以看懂即可,不用反复去写,将来可以CV
    //配置Swagger2的Docket的Bean实例
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                // apiInfo():配置 API 的一些基本信息,比如:文档标题title,文档描述description,文档版本号version
                .apiInfo(apiInfo())
                // select():生成 API 文档的选择器,用于指定要生成哪些 API 文档
                .select()
                // apis():指定要生成哪个包下的 API 文档
                .apis(RequestHandlerSelectors.basePackage("com.jankin.applet.controller"))
                // paths():指定要生成哪个 URL 匹配模式下的 API 文档。这里使用 PathSelectors.any(),表示生成所有的 API 文档。
                .paths(PathSelectors.any())
                .build();
    }
    //文档信息配置
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                // 文档标题
                .title("Knife4j接口文档")
                // 文档描述信息
                .description("Knife4j接口文档")
                // 文档版本号
                .version("1.0")
                .build();
    }
}

3. 测试连接

访问url ip:port/doc.html 即可访问接口文档页面
在这里插入图片描述

4. 注解使用

  • @Api(tags = "01.用户管理模块")

    @Api标注在Controller类上,在页面上接口文档页面上会分类替代Controller名称

  • @ApiOperation(value="查询列表")

    @ApiOperation标注在Controller方法上,在接口文档页面会显示value内容替代方法名

  • @ApiModelProperty(value = "用户名", required = true, example = "赵丽颖")

    @ApiModelProperty标注在入参的dto变量上,value会替代具体参数名称,required会显示是否必填项,example会给出默认值

  • @ApiImplicitParam(name = "id", value = "微博", required=true, dataType = "int")

    @ApiImplicitParam标注在Controller方法上,对未封装参数进行注释,value会替代具体参数名称,required会显示是否必填项,dataType 指定参数类型

  • @ApiIgnore

    @ApiIgnore标注在Controller方法的入参上,被标注的参数表示忽略该参数,不会在接口文档中显示,例如HttpRequest参数不需要显示。

5. 配置移除接口文档

在生产环境肯定不允许接口文档的出现,如果每次打包生产时都移除依赖删除配置文件太麻烦,Knife4j提供配置方式,在配置文件application.yml中添加配置

knife4j:
  enable: true
  production: true

此时在打包时,配置以上配置即可不显示接口文档。

当然如果配置文件分dev和pro版本,则直接在pro中配置即可。

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到