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

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听