甩掉接口文档烦恼!Spring Boot 集成 Knife4j,轻松玩转 API 可视化

一、引言:跟接口文档说拜拜 👋

作为一名 Java 开发者,你是否还在为编写繁琐的 API 文档而头疼?传统的手动编写方式不仅耗时费力,而且容易出错,难以维护。今天,我们就来介绍一款神器 Knife4j,它可以帮助你轻松生成美观、易于使用的 API 文档,让你告别文档编写烦恼!

二、Knife4j 简介:API 文档界的“后起之秀”

简单来说,Knife4j 是一个集 Swagger2 和 OpenAPI3 为一体的增强解决方案,它不仅拥有 Swagger 的所有功能,还做了很多优化和增强,例如:

  • 界面更美观: 提供简洁美观的界面,方便用户浏览和使用 API 文档。
  • 功能更丰富: 支持接口排序、搜索、分组等功能,支持多种格式输出。
  • 易用性更高: 提供了更友好的配置方式,使用起来更加简单方便。

三、Spring Boot 集成 Knife4j:三步搞定,轻松上手 🚀

1. 添加依赖:引入 Knife4j 包

在你的 Spring Boot 项目的 pom.xml 文件中添加以下依赖:

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

2. 配置 Knife4j:告诉它你的 API 信息

创建一个配置类,例如 Knife4jConfiguration,使用 @EnableSwagger2WebMvc 注解开启 Swagger 功能,并配置 Docket Bean,就像这样:

package com.muqing.common.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.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;@Configuration
@EnableSwagger2WebMvc
public class Knife4jConfiguration {@Bean(value = "mq-admin-api")public Docket defaultApi2() {Docket docket = new Docket(DocumentationType.SWAGGER_2).apiInfo(new ApiInfoBuilder().title("MQ-ADMIN API文档").description("# 基于 Spring Boot 与 Vue3 的后台管理系统。").termsOfServiceUrl("https://doc.uyii.cn/").contact("zhy@uyii.cn").version("1.0").build()).select().paths(PathSelectors.any()).build();return docket;}
}

3. 运行项目:见证奇迹的时刻 ✨

启动你的 Spring Boot 应用,在浏览器中访问 http://localhost:8800/doc.html,你就能看到 Knife4j 生成的 API 文档啦!

四、进阶用法:玩转 Knife4j,定制你的 API 文档 🎨

  • 分组管理 API 文档:
  @Beanpublic Docket adminApi() {return new Docket(DocumentationType.SWAGGER_2).groupName("admin").select().apis(RequestHandlerSelectors.basePackage("com.muqing.admin")) // 修改为你的模块包路径.paths(PathSelectors.any()).build();}@Beanpublic Docket frontApi() {return new Docket(DocumentationType.SWAGGER_2).groupName("front").select().apis(RequestHandlerSelectors.basePackage("com.muqing.front")) // 修改为你的模块包路径.paths(PathSelectors.any()).build();}
  • 自定义 API 信息:
@RestController
@RequestMapping("/users")
@Api(tags = "用户管理")
public class UserController {@GetMapping("/{id}")@ApiOperation("获取用户信息")public User getUser(@PathVariable Long id) {// ...}
}

五、实战演练:小试牛刀,巩固学习成果 💪

我们来创建一个简单的 Spring Boot 项目,演示如何使用 Knife4j 生成 API 文档:

1. 创建一个 Spring Boot 项目,添加 Web 依赖和 Knife4j 依赖。

2. 创建一个 FrontIndexController,编写接口:

package com.muqing.front.controller;import com.muqing.common.api.ApiResult;
import com.muqing.front.entity.Article;
import com.muqing.front.service.FrontIndexService;
import com.muqing.front.vo.IndexVo;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** IndexController** @author zhy* @since 2023/6/5*/
@RestController
@Api(tags = "后台首页")
@RequestMapping("/front")
public class FrontIndexController {@Autowiredprivate FrontIndexService frontIndexService;/*** 首页博主信息** @return {@link ApiResult}<{@link IndexVo}>*/@ApiOperation("博主信息")@GetMapping()public ApiResult<IndexVo> index() {IndexVo IndexVo = frontIndexService.getAuthorInfo();return ApiResult.success(IndexVo);}/*** 关于我** @return {@link Article}*/@ApiOperation("关于我")@GetMapping("/about")public ApiResult<Article> about() {Article article = frontIndexService.getAbout();return ApiResult.success(article);}
}

3. 运行项目,访问 http://localhost:8080/doc.html,查看生成的 API 文档。

结语:API 文档,从此轻松搞定 🎉

Knife4j 为我们提供了一种简单高效的方式来生成和管理 API 文档,从此告别繁琐的手动编写,让前后端协作更加顺畅!
希望这篇文章能够帮助你快速上手 Knife4j,更多进阶的技能请阅读官方文档! 🎉

参考资料:学习永无止境 📚

  • Knife4j 官方文档
  • Swagger 官方文档

个人观点,仅供参考,本文内容如有问题,欢迎留言讨论。


在这里插入图片描述

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

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

相关文章

win10双网卡如何同时上内网和外网?

win10双网卡如何同时上内网和外网? Chapter1 win10双网卡如何同时上内网和外网?Chapter2 网络基础--win10双网卡设置成访问不同的网络 Chapter1 win10双网卡如何同时上内网和外网? 原文链接&#xff1a;https://www.jb51.net/os/win10/806585.html 场景&#xff1a;很多办…

【计算机毕业设计】388微信小程序足球赛事及队伍管理系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

QT7_视频知识点笔记_67_项目练习(页面以及对话框的切换,自定义数据类型,DB数据库类的自定义及使用)

视频项目&#xff1a;7----汽车销售管理系统&#xff08;登录&#xff0c;品牌车管理&#xff0c;新车入库&#xff0c;销售统计图表&#xff09;-----项目视频没有&#xff0c;代码也不全&#xff0c;更改项目练习&#xff1a;学生信息管理系统。 学生信息管理系统&#xff1…

大模型助力企业提效,九章云极DataCanvas公司联合腾讯搜狗输入法发布私有化解决方案

近日&#xff0c;九章云极DataCanvas公司与腾讯搜狗输入法的合作再次升级。在搜狗输入法开发者中心正式推出之际&#xff0c;九章云极DataCanvas公司作为搜狗输入法的首批开发合作伙伴&#xff0c;双方联合发布“企业知识管理助手”私有化解决方案。 “企业知识管理助手”整体私…

Facebook的魅力:数字时代的社交热点

在当今数字化时代&#xff0c;社交媒体已经成为人们日常生活中不可或缺的一部分&#xff0c;而Facebook作为其中的巨头&#xff0c;一直以其独特的魅力吸引着全球数十亿用户。本文将深入探讨Facebook的魅力所在&#xff0c;以及它在数字时代的社交热点。 1. 社交网络的霸主&…

最新微信小程序面试题集结

1、微信小程序与H5的区别? 第一条是运行环境的不同 传统的HTML5的运行环境是浏览器&#xff0c;包括webview&#xff0c;而微信小程序的运行环境并非完整的浏览器&#xff0c;是微信开发团队基于浏览器内核完全重构的一个内置解析器&#xff0c;针对小程序专门做了优化&…

对于高速信号完整性,一块聊聊啊(17)

再来对前仿和后仿的仿真内容回顾一下&#xff1a; 从概念上有个根本的理解 前仿真又可以分为布局前仿真和布局后仿真。前者是在设计的最初阶段&#xff0c;建立和验证详细的电气拓扑结构并以此制定出详细的约束规则。后者是在布局完成的状态下&#xff0c;在布线过程中遇到的…

随机生成序列的某一排列

随机生成1~n的某一排列&#xff0c;要求生成每种可能的排列的概率相同 。 算法描述&#xff1a; 给定数值分别为1~n的序列a&#xff0c; 循环变量i从1到n&#xff0c;每次循环将a[i]与a[i]~a[n]中的随机某元素交换&#xff0c;最后a数组即为随机生成的某一排列。 #include <…

【2024】C/C++框架和库超全总结

本文分为2部分&#xff0c;第一部分&#xff1a;值得学习的C/C语言开源项目&#xff1b;第二部分是开源框架和库 粉丝福利&#xff0c; 免费领取C/C 开发学习资料包、技术视频/项目代码&#xff0c;1000道大厂面试题&#xff0c;内容包括&#xff08;C基础&#xff0c;网络编程…

MATLAB分类与判别模型算法:基于LVQ神经网络的乳腺肿瘤诊断分类程序【含Matlab源码 MX_003期】

说明 实现基于LVQ&#xff08;Learning Vector Quantization&#xff0c;学习向量量化&#xff09;神经网络的乳腺肿瘤诊断分类任务。LVQ是一种监督学习算法&#xff0c;通常用于模式识别和分类任务。 算法思路介绍&#xff1a; 导入数据&#xff1a; 加载名为"data.mat&…

2024下半年软考报名人数较去年减少,仅52.77万

2024下半年软考报名人数 2024年上半年软考考试共计报考52.77万人&#xff0c;其中&#xff0c;初级资格5.12万人、中级资格24.37万人、高级资格23.28万人。 根据往年报名人数&#xff0c;本次考试人数是减少了的&#xff0c;原因分析如下&#xff1a; 1、原来报名热门专业系…

C++的unique_ptr::release

释放给调用方返回的存储指针的所有权&#xff0c;并将存储的指针值设置为nullptr。 使用 release接管unique_ptr存储的原始指针的所有权。 调用方负责返回的指针的删除。 unique-ptr设置为空的默认构造状态。 在调用到release后&#xff0c;您可以将兼容类型的另一个指针分配到…

SSL证书申请需要多久?

SSL证书作为一种重要的网络安全工具&#xff0c;能够确保网站数据传输的安全&#xff0c;保护用户隐私和企业数据不受侵害。本文将详细介绍SSL证书的申请流程以及所需时间&#xff0c;帮助用户更好地规划和实施网络安全策略。 SSL证书&#xff0c;也称为TLS证书或HTTPS证书&am…

rest_asyncio 简化和管理异步python编程中的 REST API 调用

简介 rest_asyncio 是一个 Python 库,用于简化和管理异步编程中的 REST API 调用。它结合了 aiohttp 和 asyncio,提供了一种高效的方式来处理网络请求和响应,特别是在需要大量并发请求的场景下,例如爬虫、批量数据获取或实时数据处理。 以下是 rest_asyncio 的主要功能和…

富格林:领会正规阻挠欺诈技巧

富格林悉知&#xff0c;在当今经济不稳定的环境下&#xff0c;投资者们越来越倾向于将资金投入到相对安全和稳定的资产中&#xff0c;而黄金往往是他们的首选之一。但现货黄金市场相对复杂&#xff0c;因此要想在这个市场中立足脚跟就得领会正规阻挠欺诈的技巧。以下富格林为大…

如何优化工时表管理,提升团队效率?

时间就是金钱&#xff0c;对于企业来说&#xff0c;有效的工时表管理可以让一切变得不同。 本文将介绍控制工时表并将业务推向新高度的策略和工具。从多级审批工作流程到利用技术&#xff0c;了解如何克服常见挑战&#xff0c;收获简化工时管理流程的回报。 工时表管理,工时表…

Ardupilot开源飞控之AP_Follow

Ardupilot开源飞控之AP_Follow 1. 源由2. 定义2.1 ModeFollow类2.1.1 ModeFollow::update2.1.2 ModeFollow::_enter2.1.3 ModeFollow::_exit 2.2 AP_Follow类2.2.1 AP_Follow::handle_msg2.2.2 AP_Follow::get_target_location_and_velocity2.2.3 AP_Follow::get_velocity_ned …

getContentView(mBinding.getRoot()); 会导致内存泄露吗?里面有SurfaceView ViewBinding

在上述代码中&#xff0c;ActivityTestingBinding 是一个 Data Binding 库生成的类&#xff0c;用于绑定 XML 布局到 Activity 中。inflate(getLayoutInflater()) 用于将布局文件解析并转换为对应的视图层次结构。然后 getWindow().setFlags() 设置窗口属性&#xff0c;保持屏幕…

小型海外仓如何选择第三方海外仓系统:多看多对比,性价比优先

在现在的海外仓市场中&#xff0c;中小型海外仓&#xff0c;家庭海外仓的占比还是非常大的。这类海外仓的一个共同点就是资金有限&#xff0c;管理能力比较弱&#xff0c;很难实现规模效应。 对于这类海外仓来说&#xff0c;选择一套合适的第三方海外仓系统&#xff0c;对提升…

好用的国产大文件传输软件有哪些,快来看看吧

在这个数字化飞速发展的时代&#xff0c;我们每天都在与各种文件打交道&#xff0c;从简单的文档到庞大的视频素材&#xff0c;文件的体积越来越大&#xff0c;传统的文件传输方式逐渐显得力不从心。面对这个挑战&#xff0c;大文件传输软件应运而生&#xff0c;它们不仅解决了…