Knife4j 生成 API 文档

文章目录

    • Knife4j 简介
    • 使用步骤
    • Knife4j 常用注解的列表
    • 案例
    • 可能遇到报错

Knife4j 简介

Knife4j 是一个增强的 Swagger 文档生成工具,提供了更加友好的界面和更多功能,使得 API 文档更加美观且易于使用。它是基于 Spring Boot 和 Swagger 进行封装的,因此非常适合 Spring Boot 项目。

使用步骤

第一步:添加依赖

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

第二步:配置 Swagger 配置类

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.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;@Configuration
public class SwaggerConfig {@Beanpublic Docket createRestApi() {return new Docket(DocumentationType.OAS_30).apiInfo(apiInfo()).select()//TODO 改成自己的包名.apis(RequestHandlerSelectors.basePackage("com.example.hac.controller")).paths(PathSelectors.any()).build();}private ApiInfo apiInfo() {return new ApiInfoBuilder().title("API 文档").description("API 接口文档的描述信息").version("1.0").build();}
}

第三步:配置 application.yml

knife4j:enable: true  # 启用 Knife4j 功能 springdoc:api-docs:enabled: true  # 启用 SpringDoc API 文档生成 swagger-ui:enabled: true  # 启用 Swagger UI 界面 

技巧:
像写SwaggerConfig 配置文件,要学会使用提示写代码,代码不是记忆的,要学会一些技巧有助于提高编码能力。
在这里插入图片描述

return new Docket(DocumentationType.OAS_30).apiInfo(参数) //其实这里需要一个ApiInfo的实例   下面展示快速写这个参数

ApiInfo 类源码

public class ApiInfo {public static final Contact DEFAULT_CONTACT = new Contact("", "", "");//....省略部分代码static {DEFAULT = new ApiInfo("Api Documentation", "Api Documentation", "1.0", "urn:tos", DEFAULT_CONTACT, "Apache 2.0", "http://www.apache.org/licenses/LICENSE-2.0", new ArrayList());}
}

在这里插入图片描述

Knife4j 常用注解的列表

注解作用示例
@Api标注在类上,用于描述该类的作用和功能,可以分组管理 API。@Api(tags = "用户管理")
@ApiOperation标注在方法上,用于描述一个具体的操作(HTTP 请求),包括操作的功能、描述和其他细节。@ApiOperation(value = "获取用户信息", notes = "根据用户ID获取用户详细信息")
@ApiModel标注在类上,用于描述一个 Model(实体类)的详细信息。@ApiModel(value = "用户信息")
@ApiModelProperty标注在实体类的属性上,用于描述属性的详细信息,如字段说明、示例值等。@ApiModelProperty(value = "用户名字", example = "张三")
@ApiParam标注在方法参数上,用于描述参数信息,如参数名称、类型、是否必填等。@ApiParam(name = "id", value = "用户ID", required = true)
@ApiResponse标注在方法上,用于描述单个 HTTP 响应。@ApiResponse(code = 200, message = "请求成功")
@ApiResponses标注在方法上,用于描述多个 HTTP 响应。@ApiResponses({@ApiResponse(code = 200, message = "请求成功"), @ApiResponse(code = 404, message = "未找到")})
@ApiImplicitParam标注在方法上,用于描述单个隐式参数。@ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "int", paramType = "query")
@ApiImplicitParams标注在方法上,用于描述多个隐式参数。@ApiImplicitParams({@ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "int", paramType = "query")})
@ApiIgnore用于忽略某个类、方法或参数,使其不在 Swagger 文档中显示。@ApiIgnore

案例

第一步:定义一个pojo

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;@Data
@ApiModel(value = "用户信息")
public class User {@ApiModelProperty(value = "用户名字", example = "1")private String name;@ApiModelProperty(value = "用户年龄", example = "20")private String age;
}

第二步:编写controller service mapper

@RestController
@RequestMapping(value = "/users")
@Api(tags = "用户管理")
public class TestController {@Autowiredprivate TestService testService;@ApiOperation(value = "获取用户信息", notes = "根据用户ID获取用户详细信息")@GetMapping(value = "/{id}")public User getById(@PathVariable("id") int id) {return testService.getById(id);}
}

第三步:启动项目 访问:http://localhost:8080/doc.html

在这里插入图片描述

在这里插入图片描述

可能遇到报错

可能会遇到这个错误Failed to start bean 'documentationPluginsBootstrapper';
在这里插入图片描述
原因:这个错误是因为 Spring Boot 2.6.0 中引入了新的路径模式匹配策略,而 Swagger 3.0.0 使用了旧的路径匹配策略。这导致了 documentationPluginsBootstrapper 的启动失败
解决方法1
在application.yml中添加下面这

spring:mvc:pathmatch:matching-strategy: ANT_PATH_MATCHER

解决方法2:降低 Spring Boot 的版本

 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.4.5</version></parent>

❤觉得有用的可以留个关注❤

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

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

相关文章

Xcode 安装17.5 simulator 总是失败

升级到xcode15.4后需要安装ios17.5模拟器 但是在下载过程中会遇到报错 : The network connection is lost 解决方案&#xff1a; 先将模拟器下载到本地 Xcode 安装17.5 simulator 下载地址&#xff1a; Sign In - Applhttps://developer.apple.com/download/all/?qXcode 下…

C# WPF入门学习主线篇(十五)—— DockPanel布局容器

C# WPF入门学习主线篇&#xff08;十五&#xff09;—— DockPanel布局容器 欢迎来到C# WPF入门学习系列的第十五篇。在前几篇文章中&#xff0c;我们探讨了 Canvas、StackPanel 和 WrapPanel 布局容器及其使用方法。本篇博客将介绍另一种强大且常用的布局容器——DockPanel。…

【计算机网络】P3 计算机网络协议、接口、服务的概念、区别以及计算机网络提供的三种服务方式

目录 协议什么是协议协议是水平存活的协议的组成 接口服务服务是什么服务原语 协议与服务的区别计算机网络提供的服务的三种方式面向连接服务与无连接服务可靠服务与不可靠服务有应答服务与无应答服务 协议 什么是协议 协议&#xff0c;就是规则的集合。 在计算机网络中&…

# 梯影传媒T6投影仪刷机方法及一些刷机工具链接

梯影传媒T6投影仪刷机方法及一些刷机工具链接 文章目录 梯影传媒T6投影仪刷机方法及一些刷机工具链接1、安装驱动程序2、备份设备rom【boot、system】3、还原我要刷进设备的rom【system】4、打开开发者模式以便于安装apk5、root设备6、更多好链接&#xff1a; 梯影传媒T6使用的…

Redis系列-4 Redis集群介绍

Redis集群 Redis提供了持久化能力&#xff0c;保证了重启不会丢失数据&#xff1b;但Redis重启至完全恢复期间&#xff0c;缓存不可用。另外&#xff0c;对于高并发场景下&#xff0c;单点Redis服务器的性能不能满足吞吐量要求&#xff0c;需要进行横向扩展。此时&#xff0c;…

软件设计,建模及需求分析

文章目录 设计原则建模及需求分析UML画图工具原型图画图工具 重构 设计原则 SOLID原则 单一职责 开闭 &#xff08;扩展开放&#xff0c;修改关闭&#xff09; 里氏替换 &#xff08;父类出现地方都可以用子类替换&#xff09; 接口隔离 依赖倒置&#xff08;高层模块不依…

cmake使用make和Ninja构建对比

前提 make和Ninja是两个常见的构建工具&#xff0c;在网上查阅了一些资料&#xff0c;说是Ninja比make构建速度要快很多。但是具体不知道快多少&#xff0c;所以趁着这次编译clang的机会&#xff0c;分享下它们在时间方面差多少。 步骤 下载llvm 参考llvm官网&#xff0c;这…

stream 流的一些底层实现原理

闭包 闭包的底层实现?外层的变量成为方法的一部分会生成一个lambda方法&#xff0c;将源本的2个参数转化3个参数此时变量就成为了方法的一部分值是如何传递的呢?会有一个专门的类用于存储此变量的值 流的切分后再并行 数组或者是集合&#xff0c;需要用到一个可切分的迷代器这…

【Linux高级IO】select、poll、epoll

【Linux高级IO】select、poll、epoll toc 作者&#xff1a;爱写代码的刚子 时间&#xff1a;2024.6.5 前言&#xff1a;本篇博客将会介绍面试重点考察的select、poll、epoll IO: input && Output read && write 应用层read&&write的时候&#xff0c…

【全开源】安心护送非急救救护车转运平台小程序(FastAdmin+ThinkPHP+Uniap

&#x1f691;安心护送非急救救护车转运平台小程序——您的健康守护者&#x1f496; 安心护送转运平台小程序是一款基于FastAdminThinkPHPUniapp开发的非急救救护车租用转运平台小程序系统&#xff0c;可以根据运营者的业务提供类似短途接送救护服务&#xff0c;重症病人转运服…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《基于状态分解的综合能源系统完全分布式调度算法》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

sqli-labs 靶场 less-7 第七关详解:OUTFILE注入与配置

SQLi-Labs是一个用于学习和练习SQL注入漏洞的开源应用程序。通过它&#xff0c;我们可以学习如何识别和利用不同类型的SQL注入漏洞&#xff0c;并了解如何修复和防范这些漏洞。Less 7 SQLI DUMB SERIES-7判断注入点 进入页面中&#xff0c;并输入数据查看结果。 发现空数据提…

【C++11数据结构与算法】C++ 栈

C 栈(stack) 文章目录 C 栈(stack)栈的基本介绍栈的算法运用单调栈实战题LC例题&#xff1a;[321. 拼接最大数](https://leetcode.cn/problems/create-maximum-number/)LC例题&#xff1a;[316. 去除重复字母](https://leetcode.cn/problems/remove-duplicate-letters/) 栈的基…

下决心!学点前端图形开发来提升自已

前端图形开发已成为Web开发绕不开的部分。提升自己前端图形开发能力&#xff0c;才能快点在岗位中突围。但一看到各大实战教程的学习路径就犯难了。 内容不少&#xff0c;感觉学到老也跳不出来啊。还是走回老路&#xff1f;搞个热门国外开源框架应付算了。 我简单通过对图形系…

程序猿大战Python——流程控制——if基础语句

三大基本语句 目标&#xff1a;了解三大基本语句有哪些&#xff1f; Python中有三大基本语句&#xff0c;它们支撑起了程序的业务逻辑处理。 三大基本语句有&#xff1a; &#xff08;1&#xff09;顺序语句 &#xff08;2&#xff09;分支语句 &#xff08;3&#xff09;循…

树莓派 5 AI 套件(Hailo)示例

系列文章目录 前言 欢迎访问 Hailo Raspberry Pi 5 示例库。本项目展示了在 Raspberry Pi 5 上演示 Hailo AI 处理器功能的各种示例。这些示例将帮助您开始在嵌入式设备上使用人工智能。更多信息&#xff0c;请访问 Hailo 官方网站和 Hailo 社区论坛。 一、如何设置 Raspberry…

Apple - Quartz 2D Programming Guide

本文翻译自&#xff1a;Quartz 2D Programming Guide&#xff08;更新时间&#xff1a;2017-03-21 https://developer.apple.com/library/archive/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/Introduction/Introduction.html#//apple_ref/doc/uid/TP300010…

Renesas MCU之SCI_SPI接口驱动LCD

目录 概述 1 软硬件介绍 1.1 软件版本信息 1.2 ST7796-LCD 1.3 MCU IO与LCD PIN对应关系 2 FSP配置项目 2.1 配置项目参数 2.2 生成项目框架 3 代码实现 3.1 SPI的库函数 3.1.1 R_SCI_SPI_Open() 3.1.2 R_SCI_SPI_Read() 3.1.3 R_SCI_SPI_Write() 3.2 应用函数…

【全开源】Workerman在线客服系统(ThinkPHP+FastAdmin+Workerman)

Workerman在线客服系统&#xff1a;高效沟通的新选择 基于ThinkPHPFastAdminWorkerman开发的一款实时在线客服系统&#xff0c;支持多客服(不限座席)、知识库、离线留言板、离线消息、历史会话、微信小程序接入、Uni-app接入(高级授权)、用户轨迹等功能。​ &#x1f4e2; 一…

如何远程连接Linux服务器?

远程连接Linux服务器是通过网络连接到位于远程位置的Linux服务器&#xff0c;以进行服务器管理和操作。远程连接使得系统管理员可以方便地远程访问服务器&#xff0c;进行配置、维护和故障排除等操作&#xff0c;而不必亲自在服务器前工作。以下是一些常用的远程连接方法&#…