SpringBoot教程(十九) | SpringBoot集成knife4j

2024-04-27 14:12

本文主要是介绍SpringBoot教程(十九) | SpringBoot集成knife4j,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

首先介绍一下Knife4j. 就是一款接口文档框架,跟swagger类似。 但是整合了很多swagger的功能,页面比swagger美观。现在大有取代swagger之势

官方文档地址: https://doc.xiaominfo.com/docs/quick-start

其实主要的集成方式,在文档里都已经描述了,并且我之前也写过集成SpringBoot集成swagger的文章,大同小异。我用的是SpringBoot2. 没用3是因为没装JDK17. 都这个阶段了,还是建议用3.

在唠叨一下,knife4j 对与openapi2和openapi3都支持,我这里选用的是openapi3.

开始集成,老样子,先引入依赖:

<!-- 接口文档 --><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-spring-boot-starter</artifactId><version>4.4.0</version></dependency>

然后在配置文件里添加配置:

knife4j:enable: trueopenapi:title: 接口文档description: "接口文档生成"email: ""concat: adminurl: https://docs.xiaominfo.comversion: v4.0license: Apache 2.0license-url: https://stackoverflow.com/terms-of-service-url: https://stackoverflow.com/group:test1:group-name: ai聊天室api-rule: packageapi-rule-resources:- comn.xxx.xx.cms

我这个配置的好像不太对, 但是也无关紧要,能处理。 详细配置可以参考官网上有个gitee上的代码。

然后就是写注解了,需要在Controller上和vo上写注解,注意openapi2和openapi3的注解是不一样的。这里就简单给个例子吧:

@RestController
@RequestMapping("/api/faqType")
@Tag(name="FAQ类型相关接口")
public class FaqTypeController {private final FaqTypeBiz faqTypeBiz;// 构造方法注入public FaqTypeController(FaqTypeBiz faqTypeBiz) {this.faqTypeBiz = faqTypeBiz;}@Operation(summary = "保存Faq类型")@PostMapping("/save")public Result save(@RequestBody FaqTypeVO faqTypeVO){faqTypeBiz.saveFaqType(faqTypeVO);return Result.success();}}
@Schema(description = "faq类型分页查询参数")
@Data
public class FaqTypePageReqVO extends BasePageVO {/*** 编号*/@Schema(description = "编号")private String code;/*** 标题*/@Schema(description = "标题")private String title;/*** 内容*/@Schema(description = "内容")private String content;/*** 主管部门*/@Schema(description = "主管部门")private String department;}

然后就可以启动了,如果启动报错,这个错误我在swagger里也写过:

spring:  mvc:pathmatch:matching-strategy: ant_path_matcher

文章传送:https://lsqingfeng.blog.csdn.net/article/details/123689652?spm=1001.2014.3001.5502

然后启动项目: 输入: ip:port/doc.html 就可以打开接口文档了,长的比swagger强。

这里在说一下,如果项目中添加了拦截器,就会导致接口文档出不来,就需要放开才行,我之前也讲过这个问题。

传送: https://lsqingfeng.blog.csdn.net/article/details/123678701?spm=1001.2014.3001.5502

在文章的第四部分,就是拦截器和跨域冲突。

我按照文章里的方式试了一下,发现还是不行。 所以如果遇到这个问题的同学,请使用如下最新的解决方式:还是添加配置类

@Configuration
@Slf4j
public class SecurityConfiger implements WebMvcConfigurer {@Autowiredprivate VerifyInterceptor verifyInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {InterceptorRegistration registration = registry.addInterceptor(verifyInterceptor);registration.addPathPatterns("/**").excludePathPatterns("/oauth/callback").excludePathPatterns("/doc.html/**").excludePathPatterns("/swagger-resources/**").excludePathPatterns("/error").excludePathPatterns("/webjars/**").excludePathPatterns("/doc.html").excludePathPatterns("/api").excludePathPatterns("/api-docs").excludePathPatterns("/api-docs/**").excludePathPatterns("/doc.html/**").excludePathPatterns("/v2/**").excludePathPatterns("/v3/**").excludePathPatterns("/actuator/**");}@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");}}

这个写的比之前的代码多一下,排除支持的也更多一些。

好了,再会!

这篇关于SpringBoot教程(十九) | SpringBoot集成knife4j的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/940717

相关文章

响应式编程Spring Reactor探索

一,介绍 响应式编程(Reactive Programming),简单来说是一种生产者只负责生成并发出数据/事件,消费者来监听并负责定义如何处理数据/事件的变化传递方式的编程思想。 响应式编程借鉴了Reactor设计模式,我们通常会在高性能NIO网络通信框架中见到Reactor设计模式的身影,用来实现I/O多路复用。 基本思想是将所有要处理的I/O事件注册到一个中心I/O多路复用器上,同

基于springboot的篮球联盟管理系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式 🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于springboot的篮球联盟管理系统,java项目。 eclipse和idea都能打开运行。 推荐环境配置:eclipse/idea j

MYSQL8.0.20安装教程

一:下载mysql MySQL :: Download MySQL Installer (Archived Versions) 二:选中server only,点击next 三:点击server 选项,点击Execute 弹窗点击安装 四:安装项为绿色后,点击next 五:按照默认点击Execute 五:输入数据库密码,并点击next 此密码

【xinfanqie】详解Windows 8 RP版教程

喜欢尝鲜的用户又有口福了,微软公开发布了Windows 8 RP版(Release Preview),包括简体中文(下载)、繁体中文等多国语言版本。不错相比于win 7或者其他的操作系统Windows 8相比之前Windows变化很大,如果是第一次体验的用户可能会遇到一些问题,不过不要紧,下面我们为大家提供一个简单的使用教程,方便你体验Windows 8。   1、“开始”按钮或“开始”菜单在哪

# 从浅入深 学习 SpringCloud 微服务架构(十一)--SpringCloudGateWay(1)

从浅入深 学习 SpringCloud 微服务架构(十一)–SpringCloudGateWay(1) 一、SpringCloudGateway:概述 1、Zuul 网关存在的问题 1.1 Zuul 中,整个请求的过程 首先将请求给 zuulservlet 处理,zuulservlet 中有一个 zuulRunner 对象,该对象中初始化了 Requestcontext: 作为存储整个请求

基于Spring Ai 快速创建一个AI会话

文章目录 1、创建SpringBoot项目2、引入依赖3、修改配置文件4、一个简单的会话 前期准备 在OpenAI 注册页面创建帐户并在API 密钥页面生成令牌。 Spring AI 项目定义了一个配置属性,您应该将其设置为从 openai.com 获取的spring.ai.openai.api-key值 代码托管于giteeSpringAi文档SpringAi仓库Open

再学Java基础——List集合

List、Set和Map是Java中常用的三种集合类型,它们各自具有不同的特点和用途。 List(列表): 特点: 有序性:List中的元素是有序排列的,可以根据其索引值来访问对应位置的元素。重复性:List可以包含重复的元素。可变性:List是Java中一种可变的数据类型,可以添加、删除或修改其中的元素。可以包含不同类型的元素:List中的元素可以是任何数据类型,包括数字、字符串、对象等。用途

实现ApplicationContextAware接口完成springboot项目的初始化处理工作

需求:在项目启动的时候,从数据库里取出所有敏感词,放到map里面。 ApplicationContextAware 的实现类的setApplicationContext方法可以获取到IOC容器,虽然这个案例里面并没有什么用,但是项目初始化一般实现ApplicationContextAware 接口 核心代码 @Componentpublic class InitLoadService

解锁性能之门:探究Spring MVC异步请求的利与弊

在传统的 Web 应用程序中,客户端发起请求后,服务器端会阻塞等待直到请求处理完成并返回响应。 这种同步请求的方式在某些情况下可能会导致服务器资源的浪费和用户体验的下降,特别是在处理耗时的操作时。为了提高性能和用户体验,Spring MVC 提供了异步请求的支持。 本文将深入探讨 Spring MVC 异步请求的原理、用法以及优化性能与用户体验的方法。 1. 异步请求的原理 在传统的同步请

【探索Java编程:从入门到入狱】Day4

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~✨主攻领域:【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋🙏作者水平有限,欢迎各位大佬指点,相互学习进步! 目录 0x1 前言