Spring Boot 整合 Knife4j(快速上手)

news2024/12/30 1:49:20

关于 Knife4j

官方文档:https://doc.xiaominfo.com/
在这里插入图片描述

Knife4j是一个基于Swagger的API文档生成工具,它提供了一种方便的方式来为Spring Boot项目生成在线API文档。Knife4j的特点包括:

  • 自动化生成:通过Swagger注解,Knife4j可以自动解析API接口并生成对应的文档页面,无需手动编写文档。
  • 在线编辑和展示:Knife4j提供了在线编辑API文档的功能,可以方便地查看和测试API接口。
  • 可定制性:可以根据项目需求定制文档的展示样式和内容,满足不同项目的需求。
  • 方便集成:通过Spring Boot Starter的方式,可以方便地集成到Spring Boot项目中,无需额外的配置。

总之,Knife4j是一个方便、灵活且功能丰富的API文档生成工具,可以帮助开发团队快速生成和维护API文档。

整合 Knife4j

添加 Knife4j 依赖

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

配置 Knife4j 文档

第一种方式:Java 配置类

@Configuration
@EnableSwagger2WebMvc
public class Knife4jConfiguration {

    private ApiInfo commonApiInfo() {
        return new ApiInfoBuilder()
                .title("knife4j 接口文档测试")
                .description("Knife4j是一款基于Swagger的API文档在线编辑工具,它为Java开发人员提供了一种简单而强大的方式来创建、编辑和管理API文档。Knife4j可以帮助开发人员快速生成和展示API文档,提供了友好的界面和丰富的功能,包括接口测试、在线调试、文档管理等。它还支持对Swagger注解的解析,能够自动生成API文档,并提供了一些扩展功能,如接口权限设置、数据模型展示等。Knife4j可以帮助开发团队更好地管理和维护API文档,提高开发效率和协作能力。")
                .contact("hwike@foxmail.com")
                .version("1.0")
                .build();
    }

    @Bean(value = "dockerBeanAdmin")
    public Docket dockerBeanAdmin() {
        //指定使用Swagger2规范
        Docket docket=new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(commonApiInfo())
                //分组名称
                .groupName("后台接口分组")
                .select()
                //这里指定Controller扫描包路径
                .apis(RequestHandlerSelectors.basePackage("com.itwenke.springbootdemo.knife4j.admin"))
                .paths(PathSelectors.any())
                .build();
        return docket;
    }

    @Bean(value = "dockerBeanFront")
    public Docket dockerBeanFront() {
        //指定使用Swagger2规范
        Docket docket=new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(commonApiInfo())
                //分组名称
                .groupName("前台接口分组")
                .select()
                //这里指定Controller扫描包路径
                .apis(RequestHandlerSelectors.basePackage("com.itwenke.springbootdemo.knife4j.front"))
                .paths(PathSelectors.any())
                .build();
        return docket;
    }
}

另一种方式:application.yml 配置

# knife4j
knife4j:
  # 是否开启
  enable: true
  setting:
    language: zh-CN
  openapi:
    title: knife4j 接口文档测试
    description: Knife4j是一款基于SwaggerAPI文档在线编辑工具,它为Java开发人员提供了一种简单而强大的方式来创建、编辑和管理API文档。Knife4j可以帮助开发人员快速生成和展示API文档,提供了友好的界面和丰富的功能,包括接口测试、在线调试、文档管理等。它还支持对Swagger注解的解析,能够自动生成API文档,并提供了一些扩展功能,如接口权限设置、数据模型展示等。Knife4j可以帮助开发团队更好地管理和维护API文档,提高开发效率和协作能力。
    concat: hwike@foxmail.com
    version: 1.0.0
    group:
      admin:
        group-name: 后台接口分组
        api-rule: package
        api-rule-resources:
          - com.itwenke.springbootdemo.knife4j.admin
      front:
        group-name: 前台接口分组
        api-rule: package
        api-rule-resources:
          - com.itwenke.springbootdemo.knife4j.front

配置属性:

  • enable:是否启用Knife4j
  • openapi:基本信息,例如标题、描述、版本
    • title:标题
    • description:描述
    • concat:作者
    • version:版本号
  • group:定义API分组
    • group-name:分组名称
    • api-rule:分组规则
    • api-rule-resources:指定包名

项目运行效果:

http://localhost:8080/doc.html

在这里插入图片描述

代码实现

示例一:

@Api(value = "测试控制器", tags = "测试API")
@RestController
@RequestMapping(path = {"api/test"})
public class TestController {

    @ApiOperation("打招呼")
    @GetMapping(path = "/hi")
    public String hi(@ApiParam(value = "姓名", required = true) @RequestParam String name) {
        return "hi " + name;
    }
}
  • @Api注解用于描述一个API接口的基本信息,包括接口的名称、描述、标签等。它可以用在Controller类上,表示对整个Controller的描述,也可以用在方法上,表示对单个方法的描述。

  • @ApiOperation注解用于描述一个API接口的操作,包括接口的名称、描述、响应信息等。它通常用在Controller的方法上,表示对该方法的描述。

  • @RequestParam注解用于将请求参数绑定到方法的参数上,指定请求参数的名称、是否必须、默认值等信息。它通常用在Controller的方法参数上,表示该参数是从请求中获取的参数。

效果展示:

在这里插入图片描述
在这里插入图片描述

示例二:

@ApiOperation("查询用户")
@GetMapping(path = "/query")
public UserInfoRespDTO query(UserInfoReqDTO reqDTO) {
    UserInfoRespDTO respDTO = new UserInfoRespDTO();
    respDTO.setUserId(1L);
    respDTO.setUserName(reqDTO.getUserName());
    respDTO.setRole("admin");
    return respDTO;
}
  • @ApiModel注解用于描述一个Java类,表示该类是一个API模型,用于在API文档中展示该类的信息,包括类的名称、描述、属性等。
  • @ApiModelProperty注解用于描述一个Java类的属性,表示该属性是一个API模型的属性,用于在API文档中展示该属性的信息,包括属性的名称、描述、数据类型、是否必须等。

效果展示:
在这里插入图片描述
在这里插入图片描述

权限认证

# knife4j
knife4j:
  # 是否开启
  enable: true
  # 权限认证
  basic:
    enable: true
    username: admin
    password: 123456

再次打开http://localhost:8080/doc.html,需要输入用户密码
在这里插入图片描述

生产屏蔽

# knife4j
knife4j:
  production: true

再次打开http://localhost:8080/doc.html,就不能访问了
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1359715.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Jmeter 性能 —— 电商系统TPS计算

1、怎么计算得出TPS指标 ①第一个通过运维那边给的生产数据&#xff0c;看一下生产进件有多少&#xff0c;计算得来的&#xff0c;如果没有生产数据&#xff0c;或者不过就看如下的方法 ②第二个就是根据最近一个月的实际访问数据&#xff0c;比如每天调用了多少个接口&#…

算法基础之合并果子

合并果子 核心思想&#xff1a; 贪心 Huffman树(算法): 每次将两个最小的堆合并 然后不断向上合并 #include<iostream>#include<algorithm>#include<queue> //用小根堆实现找最小堆using namespace std;int main(){int n;cin>>n;priority_queue&l…

从零学Java - 面向对象 abstract

面向对象 abstract 文章目录 面向对象 abstract1.什么是抽象?1.1 生活中的抽象 2.抽象类2.1 不该被创建对象的类2.2 抽象类的语法2.3 抽象类的作用2.4 抽象类的特点 3.抽象方法3.1 不该被实现的方法3.2 抽象方法的语法3.3 抽象方法的特点 4.总结4.1 抽象类4.2 抽象方法 1.什么…

SpringCloud之Eureka组件工作原理详解

Eureka是一种服务注册与发现组件&#xff0c;最初由Netflix开发并开源出来。它主要用于构建分布式系统中的微服务架构&#xff0c;并提供了服务注册、服务发现、负载均衡等功能。在本文中&#xff0c;我们将详细解释Eureka的工作原理。 一、Eureka概述 Eureka是Netflix开源的一…

QT上位机开发(网络程序界面开发)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 传统的上位机对接方式还是以232、485、can为主&#xff0c;随着网络的发展&#xff0c;越来越多的设备都是以网络进行通信的。毕竟相比较之前&…

x-cmd pkg | procs - ps 命令的现代化替代品

目录 简介首次用户功能特点类似工具进一步阅读 简介 procs 是用 Rust 编写的 ps 替代品&#xff0c;用于显示有关任务进程的信息 首次用户 使用 x procs 即可自动下载并使用 在终端运行 eval "$(curl https://get.x-cmd.com)" 即可完成 x 命令安装, 详情参考 x-cmd…

vmware安装redhat 7.6 操作系统

vmware安装redhat 7.6 操作系统 1、下载redhat 7.6 操作系统镜像文件2、安装redhat 7.6操作系统3、配置redhat 7.6 操作系统3.1、配置静态IP地址 和 dns3.2、查看磁盘分区3.3、查看系统版本 1、下载redhat 7.6 操作系统镜像文件 链接: 盘盘 zwzg 文件名&#xff1a;rhel-serv…

nginx 二、配置域名

文章目录 一、配置本地域名查看虚拟机ip修改hosts文件测试域名是否配置成功 二、配置aliyun域名三、实践1.创建html2.配置nginx3.测试服务器内部测试页面测试 总结 docker中启动nginx容器完成如下操作&#xff0c;对于docker安装nginx可以看这篇文章 nginx 一、安装与conf浅析 …

【产品应用】一体化伺服电机在管道检测机器人中的应用

一体化伺服电机在管道检测机器人的应用正日益受到关注。管道检测机器人是一种能够在管道内部进行检测和维护的智能化设备&#xff0c;它可以检测管道的内部结构、泄漏、腐蚀等问题&#xff0c;以确保管道的安全和稳定运行。而一体化伺服电机作为机器人的动力源&#xff0c;对于…

在mybatis中编写SQL时,提示表名和字段名的设置方法

一、在设置中搜索SQL Dialects 二、将Global SQL Dialect和Project SQL Dialect设置为MySQL 三、添加Path&#xff0c;选择当前项目&#xff0c;完成后应用 四、连接要使用的数据库&#xff0c;连接到具体要使用的数据库 五、连接完成后&#xff0c;在xml中编写sql语句就会有…

数据结构:图详解

图的存储方式 邻接矩阵 首先先创建图&#xff0c;这一个我们可以使用邻接矩阵或者邻接链 表来进行存储&#xff0c;我们要实现的无向图的创建&#xff0c;我们先创建 一个矩阵尺寸为n*n&#xff0c;n为图中的节点个数如图所示 可以看出图中有5个结点&#xff0c;那我们创建…

Idea live template

1:打印入参日志的配置 log.info("$methodName$ 方法入参: $argsLog$",$argsJson$); methodName:methodName() argsLog:groovyScript( "def result; def params\"${_1}\".replaceAll([\\\\[|\\\\]|\\\\s], ).split(,).toList(); for(i 0; i <…

HarmonyOS 组件通用属性之位置设置

本文 我们来说 通用属性中的位置设置 主要是针对组件的对齐方式 布局方向 显示位置 做过WEB开发的 对流式布局应该都不陌生 就是 一行放内容 不够放就换行 我们可以先这样写 Entry Component struct Index {build() {Row() {Column() {Stack(){Text("你好")Text(&…

尼康、索尼和佳能各大行业利用先进防伪技术对抗人工智能造假

尼康、索尼集团和佳能正在开发相机技术&#xff0c;将数字签名嵌入图像中&#xff0c;以便将其与日益复杂的假货区分开来。尼康将为摄影记者和其他专业人士提供具有认证技术的无反光镜相机&#xff0c;而索尼计划通过固件更新&#xff0c;在三款专业级无反光镜单反相机中整合数…

梯度、散度、旋度

目录 梯度Gradient —— Scalar -> Vector 散度Divergence —— Vector -> Scalar 旋度Curl —— Vector -> Vector 梯度Gradient —— Scalar -> Vector 即函数在该点处沿着该方向&#xff08;此梯度的方向&#xff09;变化最快&#xff0c;变化率最大&#x…

数据库(二)实验一:MySQL数据库的C/S模式部署

实验要求 在云服务器上启动两个实例Server和Client&#xff0c;并实现两个实例之间的免密ssh登录。在Server和Client上分别安装MySQL&#xff0c;在Server上创建数据库和用户&#xff0c;在Client上远程连接Server的数据库。 实验内容 创建两个云服务器实例 在腾讯云购买两个…

设计循环队列——oj题622

. 个人主页&#xff1a;晓风飞 专栏&#xff1a;LeetCode刷题|数据结构|Linux 路漫漫其修远兮&#xff0c;吾将上下而求索 文章目录 题目要求&#xff1a;应该支持如下操作&#xff1a;示例&#xff1a;提示&#xff1a; 结构体定义队列的创建基本操作判断队列是否为空&#xf…

基于springboot+vue的家政服务系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…

汇报学习1

汇报的重点 项目的意义&#xff1a;可复制的经验、未来的领头基层要多具体的案例且真正有意义提拔的人的标准 汇报的维度 多做定期和主动的回报。 适当的工作汇报&#xff0c;也是对对方尊重的体现。&#xff08;每一周或每两三天的回报里&#xff0c;要体现对领导的尊重&#…

buildroot 编译错误【001】

在GitHub 查找错误,也挺好用 解决办法 fakeroot 错误 还是用docker构建编译环境安全,镜像解压脚本&#xff0c;写错了位置&#xff0c;生产环境被覆盖&#xff0c;唉 … …