甩掉接口文档烦恼!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 文档:
  @Bean
  public Docket adminApi() {
      return new Docket(DocumentationType.SWAGGER_2)
              .groupName("admin")
              .select()
              .apis(RequestHandlerSelectors.basePackage("com.muqing.admin")) // 修改为你的模块包路径
              .paths(PathSelectors.any())
              .build();
  }

  @Bean
  public 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 {

    @Autowired
    private 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 官方文档

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


在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【5.基础知识和程序编译及调试】

一、GCC概述&#xff1a;是GUN推出的多平台编译器&#xff0c;可将C/C源程序编译成可执行文件。编译流程分为以下四个步骤&#xff1a; 1、预处理 2、编译 3、汇编 4、链接 注&#xff1a;编译器根据程序的扩展名来分辨编写源程序所用的语言。根据不同的后缀名对他们进行相…

AIOps在线评测基准首阶段建设完成,面向社区发布真实运维数据!

本文根据必示科技算法研究员、产品总监聂晓辉博士在2024 CCF国际AIOps挑战赛线下宣讲会上的演讲整理成文。 2024年1月份OpenAIOps社区成立&#xff0c;随着越来越多的社区成员加入&#xff0c;各项工作在有条不紊的推进中。在线评测基准系统&#xff08;AIOps Live Benchmark&a…

在IDEA中配置servlet(maven配置完成的基础下)

在IDEA中配置servlet&#xff08;maven配置完成的基础下&#xff09; 1.先新建一个项目 2.选择尾巴是webapp的&#xff0c;名称自定义 3.点击高级设置&#xff0c;修改组id 点击创建&#xff0c;等待jar包下载完成。在pom.xml中配置以下 <dependency><groupId>ja…

方法的重写--5.29

当子类对父类的方法不满意时&#xff0c;可以进行重写&#xff0c;但是方法名字要与父类一样。 举例&#xff0c;我用people来举例&#xff0c;我是打工人&#xff0c;然后再创一个student类&#xff0c;重写方法我不是打工人&#xff0c;我是读书人。代码如下&#xff0c;发现…

基于51单片机的室内空气质量检测-仿真设计

本设计是基于单片机的空气质量检测设计&#xff0c;主要实现以下功能&#xff1a; 可实现通过SGP30测量二氧化碳及甲醛浓度&#xff0c;当超过设置的最大值时&#xff0c;进行报警及通风和净化空气处理 可实现通过MQ-4测量甲烷浓度&#xff0c;当超过设置的最大值时&#xff0…

网工内推 | 国企信息安全工程师,CISP认证优先

01 浙江省公众信息产业有限公司 &#x1f537;招聘岗位&#xff1a;安全运营工程师 &#x1f537;职责描述&#xff1a; 1. 负责公司内部安全运营平台及其子系统的安全事件管理、事件发现分析、应急响应和系统维护等&#xff1b; 2. 负责风险和漏洞管理&#xff0c;包括漏洞预…

Marin说PCB之如何在主板上补偿链路中的走线的等长误差?

一场雨把我困在这里&#xff0c;你冷漠地看我没有穿雨衣淋成落汤鸡。今天刚刚出门时候看天气预报没有雨&#xff0c;于是我就没有带雨衣骑电动车去公司了&#xff0c;谁知道回来的路上被淋成狗了。天气预报就像是女人的脾气那样&#xff0c;不能完全相信的。 好了&#xff0c;我…

Android 13 VSYNC重学习

Android 13 VSYNC重学习 引言 学无止境&#xff0c;一个字干就完事&#xff01; 源码参考基于Android 13 aosp&#xff01; 一. Android VSync模块开胃菜 在开始正式的分析之前&#xff0c;我们先简单对Android的Vsync模块简单介绍下,如下图所示&#xff0c;其中: HW_VSync是…

基础—SQL—DQL(数据查询语言)基础查询

一、引言 1、介绍&#xff1a; 分类全称描述DQL英文全称&#xff1a;Data Query Language(数据查询语言)主要是学习对数据库表中的记录进行查询的语句 2、讲解 日常的开发中或者对于一个正常的业务系统中&#xff0c;对于查询的操作次数是远远多于数据的增删改的频次。例如…

图片转excel表格工具的工具,分享3个专业的识别软件!

在数字化时代&#xff0c;我们时常面临将图片中的表格数据转换为可编辑的Excel表格的需求。无论是工作中的数据整理&#xff0c;还是学习中的资料汇总&#xff0c;这一需求都显得尤为迫切。幸运的是&#xff0c;市面上已经涌现出众多优秀的图片转Excel表格工具&#xff0c;它们…

前端渲染页面的原理

之前一直不愿意写一篇关于原理的&#xff0c;因为说起来实在是太繁杂&#xff0c;要写得细&#xff0c;码字梳理&#xff0c;计算下来起码都要差不多三周。以前一直躲避这个事情&#xff0c;现在反正有时间&#xff0c;为了不荒废自己&#xff0c;那就从头捋一遍。也方便自己后…

MyBatis系统学习 - 使用Mybatis完成查询单条,多条数据,模糊查询,动态设置表名,获取自增主键

上篇博客我们围绕Mybatis链接数据库进行了相关概述&#xff0c;并对Mybatis的配置文件进行详细的描述&#xff0c;本篇博客也是建立在上篇博客之上进行的&#xff0c;在上面博客搭建的框架基础上&#xff0c;我们对MyBatis实现简单的增删改查操作进行重点概述&#xff0c;在MyB…

基于 FastAI 文本迁移学习的情感分类(93%+Accuracy)

前言 系列专栏:【深度学习&#xff1a;算法项目实战】✨︎ 涉及医疗健康、财经金融、商业零售、食品饮料、运动健身、交通运输、环境科学、社交媒体以及文本和图像处理等诸多领域&#xff0c;讨论了各种复杂的深度神经网络思想&#xff0c;如卷积神经网络、循环神经网络、生成对…

基于双向长短时记忆网络的ECG心电信号识别(包括原始时域信号与时频域特征提取,MATLAB R2021B)

循环神经网络RNN&#xff0c;是一种链式结构&#xff0c;能够对连续输入的序列同时处理&#xff0c;且有不错的效果。RNN具有记忆功能且能够随时接受并处理输入数据&#xff0c;这得益于其特殊的连接方式&#xff0c;即神经元之间以一定的方向互相连接构成环&#xff0c;内部时…

顶级终端仿真器:ZOC8 for Mac

ZOC8 for Mac&#xff0c;专为Mac用户打造的顶级终端仿真器&#xff0c;带给您前所未有的远程连接体验。无论是SSH、Telnet、Rlogin还是Serial连接&#xff0c;ZOC8都能轻松应对&#xff0c;满足您多样化的远程连接需求。 ZOC8以其卓越的性能和稳定性&#xff0c;确保您在远程…

MarkDown语法使用手册

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

建议大家少用点儿网站测速工具

春节休息期间明月有接了几个服务器代运维的业务&#xff0c;期间就发现不少新手站长们还在用 17ce、站长工具等等这些网站测速工具来评判站点访问速度的&#xff0c;感觉很有必要给大家聊聊这个事儿&#xff0c;因为这毕竟也是一个涉及服务器安全的一个重要环节了。 其实&#…

一款开箱即用的Markdown 编辑器!【送源码】

开源的 Markdown 编辑器 Cherry Markdown Editor 是一款前端-markdown-编辑器-组件&#xff0c;具有开箱即用、轻量简洁、易于扩展等特点&#xff0c;它可以运行在浏览器或服务端 (NodeJs). 当 Cherry Markdown 编辑器支持的语法不满足开发者需求时&#xff0c;可以快速的进行…

huggingface的self.state与self.control来源(TrainerState与TrainerControl)

文章目录 前言一、huggingface的trainer的self.state与self.control初始化调用二、TrainerState源码解读(self.state)1、huggingface中self.state初始化参数2、TrainerState类的Demo 三、TrainerControl源码解读(self.control)总结 前言 在 Hugging Face 中&#xff0c;self.s…

在Windows 10中,如何利用命令提示符删除应用程序

如果你使用的是Windows 10&#xff0c;并且需要释放一些磁盘空间&#xff0c;你可以直接从命令提示符卸载不再使用的应用程序。以下是操作方法。 首先&#xff0c;你必须以管理员身份运行命令提示符才能卸载程序。在“Windows搜索”框中&#xff0c;键入“cmd”或“命令提示符…