Spring Boot 整合 Knife4j(快速上手)

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

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

生产屏蔽

# knife4j
knife4j:production: true

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

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

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

相关文章

yq操作yaml插入列表数据支持传参

yq是基于golang语言开发的一款json、yaml以及xml命令行工具&#xff0c;支持多个平台&#xff0c;github官网&#xff1a;GitHub - mikefarah/yq: yq is a portable command-line YAML, JSON, XML, CSV, TOML and properties processor 文档地址&#xff1a;Shell Completion …

凸优化 3:最优化方法

凸优化 3&#xff1a;最优化方法 最优化方法适用场景对比费马引理一阶优化算法梯度下降最速下降 二阶优化算法牛顿法Hessian矩阵Hessian矩阵的逆Hessian矩阵和梯度的区别牛顿法和梯度下降法的区别 拟牛顿法DFP、BFGS/L-BFGS 数值优化算法坐标下降法SMO算法 基于导数的函数优化解…

应用程序支持的系统版本

在使用 Android Studio 创建 Android 项目时&#xff0c;Minimum SDK 选项表示应用程序所需的最低 Android API 级别。这个选项让您指定应用程序可以运行的最小 Android 版本。 在构建应用程序时&#xff0c;您可能需要使用一些最新的 Android API 来实现某些功能。但是&#x…

FCN学习-----第一课

语义分割中的全卷积网络 CVPR IEEE国际计算机视觉与模式识别会议 PAMI IEEE模式分析与机器智能汇刊 需要会的知识点&#xff1a; 神经网络&#xff1a;前向传播和反向传播 卷积神经网络&#xff1a;CNN&#xff0c;卷积&#xff0c;池化&#xff0c;上采样 分类网络&#xff1a…

杨中科 ASP.NETCore Rest

什么是Rest RPC 1、Web API两种风格: 面向过程(RPC) 、面向REST (REST) 2、RPC:“控制器/操作方法“的形式把服务器端的代码当成方法去调用。把HTTP当成传输数据的通道&#xff0c;不关心HTTP谓词。通过QueryString请求报文体给服务器传递数据。状态码。比如/Persons/GetAll…

紧跟国际潮流,勇探未知领域

紧跟国际潮流&#xff0c;勇探未知领域 文章目录 紧跟国际潮流&#xff0c;勇探未知领域一、计算产业新面貌二、紧跟AI新潮流1、我国人工智能产业发展表现出明显的集群化趋势2、人工智能产业集群是基于网络空间发展的创新集群三、企业簇群及其产业创新生态四、创新的“极化”和…

解析拼团购-----商业升级拉锯战,如何突破重重突围?

每天五分钟讲解一个商业模式&#xff0c;大家好我是模式策划啊浩。 作为新时代商业营销的宠儿“拼团购”如何能成为商业升级的关键因素呢&#xff1f;随着互联网技术的不断进步&#xff0c;拼团购作为一种新兴的消费形式&#xff0c;正逐渐成为商业领域的新宠。在激烈的商业竞…

【LeetCode】608. 树节点

表&#xff1a;Tree ------------------- | Column Name | Type | ------------------- | id | int | | p_id | int | ------------------- id 是该表中具有唯一值的列。 该表的每行包含树中节点的 id 及其父节点的 id 信息。 给定的结构总是一个有效的树。…

linux cat命令增加文件名功能后修复可能出现的bug

增加显示文件名功能后&#xff0c;需要将输出缓冲区的大小增加FILENAME_MAX1&#xff0c;FILENAME_MAX为当前系统文件名最长时占用的字节数&#xff0c;1为冒号占用的1字节&#xff0c;否则在特殊情况下&#xff0c;会导致输出缓冲区不够用&#xff0c;程序崩溃报段错误。 仅仅…

stm32学习笔记:TIM-输出比较

四部分讲解内容&#xff0c;本文是第二部分 输出比较主要用于PWM波形的控制电机&#xff08;驱动电机的必要条件&#xff09; 1、定时器基本定时&#xff0c;定一个时间&#xff0c;然后让定时器每隔一段时间产生一个中断&#xff0c;来实现每隔一个固定时间执行一段程序的目…

存储过程从表中获取数据库名称

---------------业务数据库信息 CREATE TABLE [dbo].[app_erp_datbabase_conf] ( [id] [int] IDENTITY(1,1) NOT NULL, [database_type] [varchar](200) NOT NULL, [database_name] [varchar](200) NOT NULL, [create_time] [datetime] NULL, [modify_t…

linux磁盘管理实验1

1.在安装好的linux系统中新加一块硬盘&#xff0c;将硬盘分成2个主分区&#xff0c;和2个逻辑分区&#xff0c;将其中一个逻辑分区设置成vfat&#xff08;FAT32&#xff09;分区&#xff0c;并实现开机自动挂载所有分区。 答&#xff1a;添加一个硬盘为sdb 分成2个主分区&#…

Flink电商实时数仓项目部署上线

Flink实时数仓部署 将common作为一个自定义的依赖部署到maven中使用maven将各个子模块打包可以使用FLink框架进行jar包的提交运行。 StreamPark 一个易于使用的流处理应用开发框架和一站式流处理操作平台和管理流应用。它提供了Flink和Spark编写流的脚手架。 Core:可以使用…

解读 $mash 通证 “Fair Launch” 规则(Staking 玩法解读篇)

Solmash 是 Solana 生态中由社区主导的铭文资产 LaunchPad 平台&#xff0c;该平台旨在为 Solana 原生铭文项目&#xff0c;以及通过其合作伙伴 SoBit 跨链桥桥接到 Solana 的 Bitcoin 生态铭文项目提供更广泛的启动机会。有了 Solmash&#xff0c;将会有更多的 Solana 生态的铭…

项目整合积木报表-设计页面

项目整合积木报表-设计页面 <template><div><iframe id"dome" :srcsrc ></iframe></div> </template><script>export default {data(){return{src:configSrc.src"/jmreport/view/836138868821839872"}}} </…

ansible搭建和基本使用

客户端搭建 linux 安装Python&#xff08;python2版本&#xff0c;并且必须存在路径/usr/bin/python&#xff09; 安装openssh-server&#xff0c;并且配置允许root远程连接&#xff08;推荐&#xff09;windows Windows Server 2008R2客户端升级至powershell4.0 配置winrm…

SpringBoot 定时任务 + Scheduled 定时任务器

一、 任务描述&#xff1a; 需求 在于把本地 数据 推送到 第三方 平台的数据库&#xff0c;实现T1 增量&#xff1b; 二、实现用到技术 &#xff08;1&#xff09;Scheduled 定时任务器 Spring 3.0 之后&#xff0c;框架自带的定时任务&#xff1b; &#xff08;2&#x…

【C语言】函数

函数是什么&#xff1f; “函数”是我们早些年在学习数学的过程中常见的概念&#xff0c;简单回顾一下&#xff1a;比如下图中&#xff0c;你给函数 f(x)2*x3 一个具体的x,这个函数通过一系列的计算来返回给你一个结果(图示如下)。 这就是数学中函数的基本过程和作用。但是你…

LeetCode-杨辉三角公式

杨辉三角公式 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/a225ff66061e4076924e3299b81b98d5.png /*** author wx* description 杨辉三角公式-标准* create 2023/12/26**/ public class Triangle {public static void main(String[] args) {List<List<I…

【智慧零售】东胜物联蓝牙网关硬件解决方案,促进零售门店数字化管理

依托物联网&#xff08;IoT&#xff09;、大数据、人工智能&#xff08;AI&#xff09;等快速发展&#xff0c;数字化和智能化已成为零售企业的核心竞争力。更多的企业通过引入人工智能、大数据等先进技术手段&#xff0c;提高门店运营效率和服务质量。 某连锁咖啡企业牢牢抓住…