整合Spring Boot框架集成Knife4j

效率工具
  • 推荐一个程序员常用的工具网站:程序员常用工具(http://tools.cxyroad.com),有时间戳、JSON格式化、文本对比、HASH生成、UUID生成等常用工具,效率加倍嘎嘎好用。
云服务器
  • 云服务器限时免费领:轻量服务器2核4G
  • 腾讯云:2核2G4M云服务器新老同享99元/年,续费同价
  • 阿里云:2核2G3M的ECS服务器只需99元/年,续费同价

整合Spring Boot框架集成Knife4j

在现代Web开发中,API文档对于开发者来说至关重要。它不仅能帮助前后端开发者明确接口的使用方式,还能提供接口调试和验证功能。在Spring Boot项目中,集成Swagger是一个常见的选择。而Knife4j(前身是Swagger Bootstrap UI)在Swagger的基础上,提供了更丰富的功能和更友好的界面。本篇文章将详细介绍如何在Spring Boot项目中集成Knife4j,实现API文档的自动生成和管理。

一、什么是Knife4j

Knife4j是对Swagger的增强,提供了更丰富的功能和更友好的UI。它能够生成更加直观和美观的API文档,并且支持接口调试、接口分组、Markdown文档等功能,极大地方便了开发和测试。

1.1 Knife4j的主要功能

  • 美观的UI:提供了比Swagger UI更加美观的界面。
  • 接口调试:可以直接在页面上调试接口,查看返回结果。
  • 接口分组:支持对API进行分组管理,方便查找和管理。
  • Markdown支持:可以在文档中嵌入Markdown格式的说明,提升文档的可读性。

二、环境准备

在开始之前,确保你的开发环境中已经安装了以下工具:

  • JDK 1.8或更高版本
  • Maven或Gradle
  • IDE(IntelliJ IDEA或Eclipse等)

三、Spring Boot项目中集成Knife4j

3.1 创建Spring Boot项目

首先,创建一个新的Spring Boot项目。如果你已经有了一个现成的Spring Boot项目,可以跳过此步骤。

3.2 添加依赖

在Spring Boot项目中添加Knife4j的依赖。以Maven为例,在pom.xml文件中添加以下依赖:

<dependencies><!-- Spring Boot 依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Knife4j 依赖 --><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>4.0.0</version></dependency><!-- Swagger 依赖 --><dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</version></dependency>
</dependencies>

如果你使用Gradle,则在build.gradle文件中添加以下依赖:

dependencies {implementation 'org.springframework.boot:spring-boot-starter-web'implementation 'com.github.xiaoymin:knife4j-spring-boot-starter:4.0.0'implementation 'io.springfox:springfox-boot-starter:3.0.0'
}

3.3 配置Swagger和Knife4j

在Spring Boot项目的配置文件中进行Swagger和Knife4j的基本配置。通常在src/main/resources目录下创建或修改application.ymlapplication.properties文件。

使用application.yml进行配置:

spring:application:name: demo-applicationknife4j:enable: truetitle: API文档description: API接口文档version: 1.0.0contact:name: 开发者url: http://example.comemail: developer@example.comswagger:api-docs:path: /v3/api-docsenabled: truedocket:default:group-name: defaultpaths-to-match: /**api-info:title: API文档version: 1.0.0description: API接口文档contact:name: 开发者url: http://example.comemail: developer@example.com

使用application.properties进行配置:

spring.application.name=demo-applicationknife4j.enable=true
knife4j.title=API文档
knife4j.description=API接口文档
knife4j.version=1.0.0
knife4j.contact.name=开发者
knife4j.contact.url=http://example.com
knife4j.contact.email=developer@example.comswagger.api-docs.path=/v3/api-docs
swagger.enabled=true
swagger.docket.default.group-name=default
swagger.docket.default.paths-to-match=/**
swagger.docket.default.api-info.title=API文档
swagger.docket.default.api-info.version=1.0.0
swagger.docket.default.api-info.description=API接口文档
swagger.docket.default.api-info.contact.name=开发者
swagger.docket.default.api-info.contact.url=http://example.com
swagger.docket.default.api-info.contact.email=developer@example.com

3.4 创建Swagger配置类

在项目中创建一个Swagger配置类,启用Swagger和Knife4j。

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;@Configuration
@EnableSwagger2
public class SwaggerConfig {@Beanpublic Docket api() {return new Docket(DocumentationType.OAS_30).select().apis(RequestHandlerSelectors.basePackage("com.example.demo")).paths(PathSelectors.any()).build();}
}

在这里,我们创建了一个Swagger配置类SwaggerConfig,并在其中定义了一个Docket bean,用于扫描指定包中的API接口。

3.5 创建示例Controller

为了验证Swagger和Knife4j的集成效果,我们创建一个简单的Controller:

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;@RestController
@RequestMapping("/api")
@Api(tags = "示例接口")
public class DemoController {@GetMapping("/hello")@ApiOperation("问候接口")public String hello() {return "Hello, Knife4j!";}
}

3.6 运行项目并访问Knife4j界面

启动Spring Boot项目,打开浏览器并访问http://localhost:8080/doc.html,即可看到Knife4j生成的API文档界面。

四、高级配置和优化

4.1 接口分组

在实际项目中,API接口可能会很多,可以使用分组功能来管理不同模块的接口。在SwaggerConfig中配置多个Docket bean来实现分组:

@Configuration
@EnableSwagger2
public class SwaggerConfig {@Beanpublic Docket groupOne() {return new Docket(DocumentationType.OAS_30).groupName("组一").select().apis(RequestHandlerSelectors.basePackage("com.example.demo.group1")).paths(PathSelectors.any()).build();}@Beanpublic Docket groupTwo() {return new Docket(DocumentationType.OAS_30).groupName("组二").select().apis(RequestHandlerSelectors.basePackage("com.example.demo.group2")).paths(PathSelectors.any()).build();}
}

4.2 使用注解增强文档

可以通过Swagger的注解来增强API文档的可读性和信息量,如@ApiOperation、@ApiParam、@ApiModel等。

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;@ApiModel(description = "用户实体")
public class User {@ApiModelProperty(value = "用户ID", example = "1")private Long id;@ApiModelProperty(value = "用户名", example = "JohnDoe")private String username;// getters and setters
}

4.3 配置安全认证

如果API需要认证授权,可以在Swagger配置中添加安全配置:

import springfox.documentation.service.ApiKey;
import springfox.documentation.service.SecurityReference;
import springfox.documentation.spi.service.contexts.SecurityContext;@Configuration
@EnableSwagger2
public class SwaggerConfig {@Beanpublic Docket api() {return new Docket(DocumentationType.OAS_30).select().apis(RequestHandlerSelectors.any()).paths(PathSelectors.any()).build().securitySchemes(Arrays.asList(apiKey())).securityContexts(Arrays.asList(securityContext()));}private ApiKey apiKey() {return new ApiKey("JWT", "Authorization", "header");}private SecurityContext securityContext() {return SecurityContext.builder().securityReferences(defaultAuth()).build();}private List<SecurityReference> defaultAuth() {AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];authorizationScopes[0] = authorizationScope;return Arrays.asList(new SecurityReference("JWT", authorizationScopes));}
}

五、总结

通过本文的介绍,我们了解了如何在Spring Boot项目中集成Knife4j,提升API文档的美观性和可用性。Knife4j不仅提供了友好的界面,还支持丰富的功能,如接口调试、接口分组和Markdown文档等。

在实际项目中,合理配置和使用Knife4j,不仅能提升开发效率,还能为前后端联调和测试提供极大的便利。如果你还没有在项目中使用Knife4j,不妨尝试一下,相信你会喜欢上这个强大的工具。

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

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

相关文章

Nginx的配置文件-详细使用说明

Nginx的配置文件是Nginx服务器运行的核心,它决定了Nginx如何响应和处理各种请求。以下是对Nginx配置文件(通常名为nginx.conf)的详细解析,按照常见的结构和配置项进行分类: 1. 全局块 user:指定Nginx运行的用户和用户组。例如:user nginx;worker_processes:指定工作进…

FPGA复位专题---(41)复位管脚PR报错?

(41)复位管脚PR报错? 1 目录 (a)FPGA简介 (b)Verilog简介 (c)复位简介 (d)复位管脚PR报错? (e)结束 1 FPGA简介 (a)FPGA(Field Programmable Gate Array)是在PAL (可编程阵列逻辑)、GAL(通用阵列逻辑)等可编程器件的基础上进一步发展的产物。它是…

微服务开发与实战Day01 - MyBatisPlus

一、微服务 概念&#xff1a;微服务是一种软件架构风格&#xff0c;它是以专注于单一职责的很多小型项目为基础&#xff0c;组合除复杂的大型应用。 课程安排&#xff1a; https://www.bilibili.com/video/BV1S142197x7/?spm_id_from333.1007.top_right_bar_window_history.…

Vue3-Vite-ts 前端生成拓扑图vis,复制即用

完整代码&#xff0c;复制即可用&#xff0c;样式自调 试过 jointjs dagre-d3 vis&#xff0c;好用一点&#xff0c;可添加同层的双向箭头 方法1&#xff1a;Vis.js npm install vis-network <template><div id"mynetwork" class"myChart" :st…

通过DirectML和ONNXRuntime运行Phi-3模型

更多精彩内容&#xff0c;欢迎关注我的公众号“ONE生产力”&#xff01; 上篇我们讲到通过Intel Core Ultra系列处理器内置的NPU加速运行Phi-3模型&#xff0c;有朋友评论说他没有Intel处理器是否有什么办法加速Phi-3模型。通常&#xff0c;使用GPU特别是NVIDA的GPU加速AI模型…

react组件中的this

在React类组件中&#xff0c;如果你使用传统的函数声明方式定义一个方法( function xxx)&#xff0c;那么这个方法内部的 this 通常是 undefined。这是因为JavaScript函数中的 this 是在运行时基于函数是如何被调用的来绑定的&#xff0c;而不是在定义时。 例如&#xff1a; c…

混剪素材库有哪些?分享7个高质量混剪视频素材网站

作为自媒体创作者&#xff0c;我们经常需要高质量的混剪视频素材来吸引观众。今天&#xff0c;我将为大家介绍几个优质的视频素材网站&#xff0c;确保您的短视频制作既高效又充满创意。 蛙学府素材网 首推蛙学府素材网&#xff0c;这个平台真是创作者的福音。无论是短视频素材…

重磅消息! Stable Diffusion 3将于6月12日开源 2B 版本的模型,文中附候补注册链接。

在OpenAI发布Sora后&#xff0c;Stability AI也发布了其最新的模型Stabled Diffusion3, 之前的文章中已经和大家介绍过&#xff0c;感兴趣的小伙伴可以点击以下链接阅读。Sora是音视频方向&#xff0c;Stabled Diffusion3是图像生成方向&#xff0c;那么两者没有必然的联系&…

electron-Vue: Module parse failed: Unexpected character ‘ ‘

​ electron-Vue项目中&#xff0c;我自己写了一个node的C扩展&#xff08;xx.node&#xff09;&#xff0c;然后在.vue文件里import它&#xff0c;然后运行npm run electron:serve&#xff0c;报错如下: ​​ electron-Vue打包默认使用webpack&#xff0c;默认情况下webpack没…

spark学习记录-spark基础概念

背景需求 公司有项目需要将大容量数据进行迁移&#xff0c;经过讨论&#xff0c;采用spark框架进行同步、转换、解析、入库。故此&#xff0c;这里学习spark的一些基本的概念知识。 Apache Spark 是一个开源的大数据处理框架&#xff0c;可以用于高效地处理和分析大规模的数据…

盘点哪些企业容易被ddos攻击

DDoS&#xff08;分布式拒绝服务&#xff09;攻击已成为网络安全威胁中的重要一环。本文将探讨哪些类型的企业容易成为DDoS攻击的目标&#xff0c;并提出相应的防范策略&#xff0c;帮助企业更好地保护自身网络安全。 一、电子商务平台 电子商务平台作为线上交易和支付的重要场…

C语言题目要求实现方法总结(1-10)

目录 一、互换A, B的值 1. 1使用中间变量 1.2 使用异或^&#xff08;不允许创建中间变量&#xff09; 1.3 使用函数&#xff08;指针传参&#xff09; 二、 按降序输出A, B的值 2.1 直接实现 2.2 使用指针 三、 找出最大值 3.1 遍历数组 先输入再找&#xff08;常规&#xff09…

一文了解JVM(中)

HotSpot 虚拟机对象探秘 对象的创建 Header解释使用 new 关键字调用了构造函数使用 Class 的 newInstance 方法调用了构造函数使用 Constructor 类的newInstance 方法调用了构造函数使用 clone 方法没有调用构造函数使用反序列化没有调用构造函数说到对象的创建,首先让我们看…

6个迹象表明你的电脑电缆管理很糟糕,看下你有没有中招

​清理电脑内部的电缆可能看起来像是徒劳的忙碌。毕竟,如果一切都正常,为什么还要麻烦呢?好吧,我有六个很好的理由可以说服你打开你的机箱,修复你电脑里的混乱。 你很难打开侧板 如果你的电缆离侧板的边缘太近,你将无法毫不费力地将它们滑开。虽然这不是你每天都要做的…

完全指南:C语言学习资源汇总

C语言是编程学习的基石&#xff0c;无论是为了职业发展还是个人兴趣&#xff0c;掌握C语言都是技术生涯的重要一步。为了帮助初学者和有经验的程序员更好地学习和深化对C语言的理解&#xff0c;我们汇总了一系列优秀的书籍和在线资源。这些资源将帮助你从基础知识到高级概念&am…

数据结构——图论详细笔记

一 图论基本概念 Directed Acyclic Graph &#xff08;DAG&#xff09; 二 图的存储 ①邻接矩阵(适用于稠密图) ②邻接表(适用于稀疏图) 三、图的遍历 ①深度优先搜索 //(基于邻接表实现&#xff0c;以有向图为例) //DFS:Depth First Search 深度优先搜索 //1、访问起始顶点 …

为什么要开发盲盒小程序?商家企业的盈利方向?

近几年&#xff0c;盲盒已经成为了一种娱乐消费的流行趋势&#xff0c;受到了年轻人的喜欢&#xff0c;推动了盲盒经济的快速发展。在互联网的支持下&#xff0c;盲盒行业也获得了数字化发展&#xff0c;盲盒小程序为市场创新发展提供了重要动力。在当下小程序快速发展的时代&a…

【C++修行之道】类和对象(四)运算符重载

目录 一、 运算符重载 函数重载和运算符重载有什么关系&#xff1f; 二、.*运算符的作用 三、运算符重载的正常使用 四、重载成成员函数 五、赋值运算符重载 1.赋值运算符重载格式 传值返回和引用返回 有没有办法不生成拷贝&#xff1f; 2. 赋值运算符只能重载成类的…

MongoDB CRUD操作:可重试写入

MongoDB CRUD操作&#xff1a;可重试写入 文章目录 MongoDB CRUD操作&#xff1a;可重试写入使用的先决条件部署的限制支持的存储引擎3.6 MongoDB 驱动程序MongoDB 版本写确认 可重试写入和多文档事务启用可重试写入MongoDB驱动mongosh 可重试的写操作行为持续的网络错误故障切…

Linux如何远程连接服务器?

远程连接服务器是当代计算机技术中一个非常重要的功能&#xff0c;在各种领域都有广泛的应用。本文将重点介绍如何使用Linux系统进行远程连接服务器操作。 SSH协议 远程连接服务器最常用的方式是使用SSH&#xff08;Secure Shell&#xff09;协议。SSH是一种网络协议&#xff…