Spring Boot集成Knife4j文档工具

Knife4j 搭建

Knife4j环境的的搭建和Swagger一样都比较简单,只需要极简的配置即可。

maven依赖

我使用的是较高版本的基于openapi规范的依赖包,OpenAPI2(Swagger)规范是Knife4j之前一直提供支持的版本,底层依赖框架为Springfox

此次在4.0版本开始Knife4j有了新的变化,主要有以下几点:

  • Springfox版本选择的依然是2.10.5版本,而并非springfox最新3.0.0版本

  • 不支持以Springfox框架为基础的OpenAPI3规范,放弃Springfox项目的后续版本适配支持工作

  • Spring Boot 版本建议 2.4.0~3.0.0之间

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.7.6</version>
</dependency><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi2-spring-boot-starter</artifactId><version>4.3.0</version>
</dependency>

创建接口

我们创建两个控制器controller类,并创建几个API方法加上@Api@ApiOperation@ApiParam注解,更多的注解使用可以参考Sprinboot 集成 Swagger3.0 详解。

BuyController

import com.springboot101.po.User;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;@RequestMapping("/buy")
@Api(tags = "商家管理")
@RestController
public class BuyController {@ApiOperation("创建商家")@PostMapping("/createBuy")public ResponseEntity<User> createUser(@RequestBody User user) {return ResponseEntity.ok(user);}@ApiOperation("更新商家")@PostMapping("/updateBuy/{id}")public ResponseEntity<User> updateUser(@ApiParam(value = "商家主键ID", required = true) @PathVariable("id") String id,@RequestHeader("token") String token,@RequestParam("name") String name,@RequestBody User user) {return ResponseEntity.ok(user);}
}

UserController

import com.springboot101.po.User;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;@RequestMapping("/user")
@Api(tags = "用户管理")
@RestController
public class UserController {@ApiOperation("创建用户")@PostMapping("/createUser")public ResponseEntity<User> createUser(@RequestBody User user) {return ResponseEntity.ok(user);}@ApiOperation("更新用户")@PostMapping("/updateUser/{id}")public ResponseEntity<User> updateUser(@ApiParam(value = "用户主键ID", required = true) @PathVariable("id") String id,@RequestHeader("token") String token,@RequestParam("name") String name,@RequestBody User user) {return ResponseEntity.ok(user);}
}

Knife4j配置

在以前的版本中,开发者需要在配置类中手动使用@EnableKnife4j注解来使用增强功能,自2.0.6版本后,只需要在配置文件中配置knife4j.enable=true即可,不在使用注解开启了。

@Configuration
@EnableKnife4j 
public class Knife4jConfig {}

而且自2.0.6版本开始,将UI界面中一些个性化配置从代码中剥离,我们可以直接在application.yml文件中配置文档属性,使用起来更加的简洁了。

# Knife4j配置
knife4j:# 开启增强配置enable: true#开启Basic登录认证功能openapi:title: xx官方文档description: ""email: 515361725@qq.comconcat: xxurl: http://xiaofucode.comversion: v1.0 # 版本号license: Apache 2.0license-url: https://fire100.topterms-of-service-url: https://fire100.top #API服务条款

默认情况下,如果不设置API的分组,Knife4j会扫描全部标注了@Api@ApiOperation等注解类,将它们全部放入到default分组。

图片

API分组

knife4j的分组支持我们在yml文件中配置,开启knife4j.openapi.group

例如:新建userbuy模块就代表了不同的分组,其中的子项:

  • group-name:分组的名称;

  • api-rule:组内资源扫描策略,目前支持根据package类路径扫描,annotation扫描特定注解;

  • api-rule-resources:资源路径(数组),策略为 package 时填写完整的controller类路径,策略为 annotation 时填写特定注解的完整路径;

# Knife4j配置
knife4j:# 开启增强配置enable: true#开启Basic登录认证功能openapi:title: xxdescription: "xx"email: 515361725@qq.comconcat: xxurl: http://xiaofucode.comversion: v1.0 # 版本号license: Apache 2.0license-url: https://fire100.topterms-of-service-url: https://fire100.top #API服务条款# API分组配置group:user:group-name: 用户管理 # 组名api-rule: package # 扫描规则,是根据包路径还是请求路径api-rule-resources: # 扫描的资源- com.springboot101.controller.userbuy:group-name: 商家管理api-rule: packageapi-rule-resources:- com.springboot101.controller.buy#user:
#        group-name: 用户管理
#        api-rule: annotation
#        api-rule-resources:
#          - io.swagger.annotations.Api   # 扫描带有 @Api 注解的接口
#      buy:
#        group-name: 商家管理
#        api-rule: annotation
#        api-rule-resources:
#          - io.swagger.annotations.Api   # 扫描带有 @Api 注解的接口

用户认证

knife4j内置了Basic认证,只要在开启basic下配置认证用户名和密码即可。

knife4j:#开启Basic登录认证功能basic:enable: true# Basic认证用户名username: admin# Basic认证密码password: 123456

再次访问文档路径时会弹出登录框。

图片

完整的knife4j配置

以下是knife4j的完整配置:

server:port: 9002# Knife4j配置
knife4j:# 开启增强配置enable: true#开启Basic登录认证功能basic:enable: true# Basic认证用户名username: admin# Basic认证密码password: 123456openapi:title: xxxdescription: "xx"email: 515361725@qq.comconcat: xxurl: http://xiaofucode.comversion: v1.0 # 版本号license: Apache 2.0license-url: https://fire100.topterms-of-service-url: https://fire100.top #API服务条款# API分组配置group:user:group-name: 用户管理 # 组名api-rule: package # 扫描规则,是根据包路径还是请求路径api-rule-resources: # 扫描的资源- com.springboot101.controller.userbuy:group-name: 商家管理api-rule: packageapi-rule-resources:- com.springboot101.controller.buy#user:
#        group-name: 用户管理
#        api-rule: annotation
#        api-rule-resources:
#          - io.swagger.annotations.Api   # 扫描带有 @Api 注解的接口
#      buy:
#        group-name: 商家管理
#        api-rule: annotation
#        api-rule-resources:
#          - io.swagger.annotations.Api   # 扫描带有 @Api 注解的接口

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

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

相关文章

keil5搜索框还有左侧文件状态栏不见的问题

点击上面的window&#xff0c;弹出 reset view to default &#xff0c;然后点击&#xff0c;再点击reset&#xff0c;就ok了

基于Mybatis,MybatisPlus实现数据库查询分页功能

基于Mybatis&#xff0c;MybatisPlus实现数据库查询分页功能 目录 基于Mybatis&#xff0c;MybatisPlus实现数据库查询分页功能使用Mybatis插件实现分页数据库准备分页插件配置和使用常用数据&#xff1a; 使用MybatisPlus插件实现分页数据库准备分页插件配置和使用自定义分页查…

HNU_多传感器(专选)_作业4(构建单层感知器实现分类)

1. (论述题)&#xff08;共1题&#xff0c;100分&#xff09; 假设平面坐标系上有四个点&#xff0c;要求构建单层感知器实现分类。 (3,3),(4,3) 两个点的标签为1&#xff1b; (1,1),(0,2) 两个点的标签为-1。 思路&#xff1a;要分类的数据是2维数据&#xff0c;需要2个输入…

内圆弧转子泵绘制工具开发

接着上期的Gerotor 泵的话题继续。最近有小伙伴找我开发一个内圆弧摆线泵的计算绘制工具&#xff0c;也就是把上次计算绘制的过程做成一个桌面应用工具&#xff0c;这样用起来会更方便、效率更高。那究竟是什么样的工具呢&#xff1f;一起来看看&#xff1a; 前面不是已经有了上…

面试技术点之安卓篇

一、基础 二、高级 三、组件 Android中SurfaceView和TextureView有什么区别&#xff1f; 参考 Android中SurfaceView和TextureView有什么区别&#xff1f; 四、三方框架 五、系统源码 六、性能优化

在Ubuntu 2404上使用最新的PicGo

在转向Ubuntu之后&#xff0c;果断下载了今年最新的Ubuntu2404,但是随之而来的是底层组件的更新&#xff0c;很多以前可以畅快使用的软件&#xff0c;因为需要老版本的组件而不能正确运行&#xff0c;PicGo就是如此 我们从这里打开Release列表 其中Ubuntu可用的只有这个AppIma…

用ue5打开网址链接

需要用到 Launch URL 这个函数 字面意思就是打开填写的链接网页 这里填写的是百度&#xff0c;按下Tab键后就会打开百度的网页

ISP(Image Signal Processor)——HDR技术总结

传统多帧融合技术 拍摄一系列不同曝光时长的图像帧&#xff08;LDR&#xff09;&#xff0c;然后使用融合算法进行融合成HDR图像。 融合算法可以分为两种 基于照度图估计的融合 基于照度估计需要拟合相机响应函数&#xff0c;详细可以参考如下论文&#xff1a; Recovering H…

C++打造局域网聊天室第七课: Socket编程初步2

文章目录 前言一、Socket的API函数二、服务端建立Socket步骤总结 前言 C打造局域网聊天室第七课&#xff1a; Socket编程初步2 一、Socket的API函数 接着上一课的内容&#xff0c;我们在chartroom.cpp中找到如下位置 插入断点&#xff0c;运行 运行到断点处后&#xff0c;按…

【razor】echo搭配relay功能分析

echo 要搭配relay 实现作者说relay在linux上跑,可以模拟丢包、延迟目前没看到如何模拟。relay监听9200,有俩作用 echopeer1 发relay,replay 把peer1的包给peer2 ,实现p2p能力。 接收端:采集后发送发给relay的 接收端的地址就是自己,的地址就是本地的9200,因此是让relay接…

Wallpaper壁纸制作学习记录11

操控变形动画介绍 操控变形是使用Wallpaper Engine为角色和某些对象创建复杂动画的一种高级方法。操控变形是一个多步骤过程&#xff0c;要求您有一个单独的图像图层&#xff0c;其中包含要制作动画的角色或对象的剪切图。 操控变形功能相对复杂&#xff0c;您也可以创建仅包含…

黑马程序员Java项目实战《苍穹外卖》Day12

苍穹外卖-day12 课程内容 工作台Apache POI导出运营数据Excel报表 功能实现&#xff1a;工作台、数据导出 工作台效果图&#xff1a; 数据导出效果图&#xff1a; 在数据统计页面点击数据导出&#xff1a;生成Excel报表 1. 工作台 1.1 需求分析和设计 1.1.1 产品原…

windows下Qt5自动编译配置QtMqtt环境

原文链接&#xff1a;windows下Qt5自动编译配置QtMqtt环境&#xff08;11&#xff09;-CSDN博客 1、概述 Qt默认是不包含mqtt库的&#xff0c;如果需要使用到mqtt库就只能自己编译配置&#xff1b;网络所有的QtMqtt配置的文章都是编译完成手动复制&#xff0c;非常麻烦&#x…

阿里云服务器Linux(centos)系统安装nginx1.20.2

阿里云服务器Linux(centos)系统安装nginx1.20.2 1.安装依赖包 一共要安装4种依赖&#xff08;基于c语言&#xff09; yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel2.下载nginx安装包并解压安装包 nginx官网下载&#xff1a;http://nginx.org/en/do…

【C++】三角形校验和算法优化的深入分析

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目描述&#x1f4af;老师的解法实现代码解法分析优势缺点 &#x1f4af;我的解法实现代码解法分析优势缺点 &#x1f4af;数学解释&#xff1a;为什么新增条件是冗余的&a…

【C++软件调试技术】dump文件类型与dump文件生成方法详解

目录 1、概述 2、dump文件的分类 2.1、dump按大小分类 2.2、查看dump文件中函数调用堆栈中变量的值 3、调用SetUnhandledExceptionFilter设置异常处理回调函数&#xff0c;然后调用MiniDumpWriteDump生成dump文件 4、使用Google开源库CrashRpt捕获异常&#xff0c;并自动…

持有CSPM证书可以用于评职称吗?

CSPM的诞生背景 CSPM&#xff08;Certified Strategic Project Manager&#xff09;即项目管理专业人员能力评价等级证书&#xff0c;是由中国标准化协会&#xff08;CAS&#xff09;根据国标《项目管理专业人员能力评价要求》&#xff08;GB/T 41831-2022&#xff09;推出的项…

SpringBoot左脚进门之常用注解

类级别注解 SpringBootApplication Configuration //表明这是一个配置类 EnableAutoConfiguration //开启自动配置 ComponentScan() //开启组件扫描1、Configuration&#xff1a; 当一个类被 Configuration 注解…

刷题日志【4】

目录 1、猜数字大小 1、猜数字大小 题意有点抽象&#xff0c;我大概讲一下&#xff0c;就是在1——n里面会有一个目标数&#xff0c;我们通过猜数字的方式逼近这个数字&#xff0c;直到解出这个数&#xff0c;之前我们是用二分法求最快达到求解的问题&#xff0c;这道题多了每…

【数据结构——栈与队列】环形队列的基本运算(头歌实践教学平台习题)【合集】

目录&#x1f60b; 任务描述 相关知识 测试说明 我的通关代码: 测试结果&#xff1a; 任务描述 本关任务&#xff1a;编写一个程序实现环形队列的基本运算。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a; 初始化队列、销毁队列、判断队列是否为空、进队列…