终于告别了单调的swagger-ui了,选择了这款神器—knife4j

knife4j作为Java MVC框架集成Swagger的增强解决方案,提供更友好的API文档生成体验,支持个性化配置、接口排序及多种导出格式,适用于单体及微服务架构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

点击上方 "程序员小乐"关注, 星标或置顶一起成长

每天凌晨00点00分, 第一时间与你相约

每日英文

Apologies do not always imply that you are wrong and the other side is right. Sometimes, it implies that you treasure the relationship of you two.

道歉并不总意味着你是错的,对方是对的。有时它只是意味着相对自我而言,你更珍视你们之间的关系。

每日掏心

我是一个反应迟钝的人,事物总要在我身边掠过很久以后,才会在我这里发生振荡,回应,疼痛的感觉同样如此,它缓慢,因之它也持久。

来自:最美分享Coder | 责编:乐乐

链接:toutiao.com/i6789135368064074253

程序员小乐(ID:study_tech)第 809 次推文   图片来自百度

往日回顾:面试官问:浏览器输入 URL 回车之后发生了什么?

     

   正文   

一、介绍

knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案(在非Java项目中也提供了前端UI的增强解决方案),前身是swagger-bootstrap-ui,取名knife4j是希望她能像一把匕首一样小巧,轻量,并且功能强悍!

二、开源仓库

  • Github

github.com/xiaoymin/swagger-bootstrap-ui
  • 码云

gitee.com/xiaoym/knife4j

三、功能特性

  • 简洁

基于左右菜单式的布局方式,是更符合国人的操作习惯吧.文档更清晰...

  • 个性化配置

个性化配置项,支持接口地址、接口description属性、UI增强等个性化配置功能...

  • 增强

接口排序、Swagger资源保护、导出Markdown、参数缓存众多强大功能...

四、功能预览

  • 在线预览

http://knife4j.xiaominfo.com/doc.html
  • 选择不同接口

  • Authorize

  • swagger实体

包含了swagger实体的相关信息

  • swagger全局设置

全局参数设置

  • 离线文档导出

Knife4j提供导出4种格式的离线文档(Html\Markdown\Word\Pdf)

  • 个性化设置

  • api文档

  • 搜索功能

五、使用简介

  • 项目结构

  • 目前主要的模块

目前主要的模块包括:模块名称说明:knife4j为Java MVC框架集成Swagger的增强解决方案knife4j-admin云端Swagger接口文档注册管理中心,集成gateway网关对任意微服务文档进行组合集成knife4j-extensionchrome浏览器的增强swagger接口文档ui,快速渲染swagger资源knife4j-service为swagger服务的一系列接口服务程序knife4j-frontknife4j-spring-ui的纯前端静态版本,用于集成非Java语言使用swagger-bootstrap-uiknife4j的前身,最后发布版本是1.9.6
  • 单纯皮肤增强

不使用增强功能,纯粹换一个swagger的前端皮肤,这种情况是最简单的,你项目结构下无需变更

可以直接引用swagger-bootstrap-ui的最后一个版本1.9.6或者使用knife4j-spring-ui

老版本引用

<dependency>    
  <groupId>com.github.xiaoymin</groupId>    
  <artifactId>swagger-bootstrap-ui</artifactId>    
  <version>1.9.6</version>
</dependency>

新版本引用

<dependency>    
  <groupId>com.github.xiaoymin</groupId>    
  <artifactId>knife4j-spring-ui</artifactId>    
  <version>${lastVersion}</version>
</dependency>
  • Spring Boot项目单体架构使用增强功能

在Spring Boot单体架构下,knife4j提供了starter供开发者快速使用

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

该包会引用所有的knife4j提供的资源,包括前端Ui的jar包

  • Spring Cloud微服务架构

在Spring Cloud的微服务架构下,每个微服务其实并不需要引入前端的Ui资源,因此在每个微服务的Spring Boot项目下,引入knife4j提供的微服务starter

<dependency>    
  <groupId>com.github.xiaoymin</groupId>    
  <artifactId>knife4j-micro-spring-boot-starter</artifactId>    
  <version>${knife4j.version}</version>
</dependency>

在网关聚合文档服务下,可以再把前端的ui资源引入

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

六、总结

针对knife4j的总结,无非就是牛逼来形容,切实的解决了swagger ui不够友好的问题,而且还可以集成到其他语言的api项目中,真真切切的需要感谢开发作者提供了这么好的工具供我们使用,小伙伴是不是心动了,赶紧去试试吧!enjoy it!

欢迎在留言区留下你的观点,一起讨论提高。如果今天的文章让你有新的启发,学习能力的提升上有新的认识,欢迎转发分享给更多人。

欢迎各位读者加入订阅号程序员小乐技术群,在后台回复“加群”或者“学习”即可。

猜你还想看

阿里、腾讯、百度、华为、京东最新面试题汇集

SpringBoot2.x炫酷吊炸天前后端分离的后台管理系统实例

再无包夜!网络游戏或实行宵禁,午夜之前关闭服务器,你赞同吗?

面试官我:什么是NIO?NIO的原理是什么机制?我竟然没回答上来...

关注订阅号「程序员小乐」,收看更多精彩内容

嘿,你在看吗

<think>好的,我需要帮助用户了解如何在Swagger-Bootstrap-UI 1.9.3版本中实现类似knife4j的功能配置。首先,我得回忆一下这两个项目的区别和联系。根据用户提供的引用内容,knife4jSwagger-Bootstrap-UI的升级版,集中了所有特性到knife4j-spring-ui包中,并且提供更多增强功能,比如动态参数、接口排序等。而用户提到的Swagger-Bootstrap-UI 1.9.3是一个较旧的版本,可能缺少knife4j的一些新特性。 接下来,用户想知道如何在1.9.3版本中配置出类似knife4j的功能。我需要检查旧版本是否支持这些功能,或者是否有替代方法。根据引用3,knife4j的增强功能需要添加@EnableKnife4j注解,而旧版本可能没有这个。可能需要手动配置或调整代码。 首先,界面美化方面,Swagger-Bootstrap-UI 1.9.3已经有自己的UI改进,可能接近knife4j的界面,但需要确认是否支持主题切换或自定义CSS。引用3提到knife4j解决了界面丑的问题,所以旧版本可能界面不够美观,但用户可能需要手动调整。 其次,功能增强如动态参数、参数过滤、接口排序。旧版本可能不支持这些,但可以通过其他方式实现。例如,接口分组可以使用Swagger的@Group注解,或者配置Docket实例来分组。参数过滤可能需要自定义注解或过滤器,处理请求参数。接口排序可能需要手动在代码中调整接口定义的顺序,或者使用Swagger的@Api注解的position属性。 另外,离线文档导出功能,旧版本可能支持通过前端导出,或者需要依赖其他库。引用1提到Swagger-Bootstrap-UI的纯前端版本可以导出,所以用户可能需要集成前端资源来实现。 还需要考虑依赖管理,用户可能需要添加或升级相关的Maven/Gradle依赖,确保没有冲突。例如,检查是否引入了正确的springfox-swaggerSwagger-Bootstrap-UI版本。 最后,可能存在的局限性,比如旧版本无法完全实现knife4j的所有功能,这时需要建议用户考虑升级到knife4j以获得更好的支持。同时,提供替代方案和配置步骤,帮助用户尽可能接近所需功能。 总结步骤:界面优化配置、功能增强实现、文档导出、依赖管理,最后指出局限性并建议升级。需要确保每个步骤具体可行,并参考用户提供的引用内容,特别是引用3中的注解说明和访问方式。</think>### Swagger-Bootstrap-UI 1.9.3 实现类似knife4j的配置方法 #### 1. 界面优化配置 Swagger-Bootstrap-UI 1.9.3 默认界面已优于原生Swagger,但需通过以下配置接近knife4j的增强效果: ```xml <!-- 添加Maven依赖 --> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>swagger-bootstrap-ui</artifactId> <version>1.9.3</version> </dependency> ``` 在Spring Boot启动类中添加注解: ```java @EnableSwagger2 @EnableSwaggerBootstrapUI // 启用增强UI public class Application { ... } ``` 访问地址为:$http://host:port/doc.html$[^3] #### 2. 功能增强实现 | 功能 | 实现方法 | |---------------|-----------------------------------------------------------------------------------------| | 接口排序 | 在Controller类添加$@Api(tags = "模块名称")$,同类接口自动分组并按字母排序 | | 参数过滤 | 使用$@ApiImplicitParams$定义动态参数,或通过$Docket.ignoredParameterTypes()$全局过滤 | | 文档调试 | 启用`EnableSwaggerBootstrapUI`后,默认支持Header参数动态修改和全局参数配置 | #### 3. 离线文档导出 通过前端页面导出Markdown/HTML: 1. 访问$http://host:port/doc.html$ 2. 点击**文档管理** -> **离线文档** 3. 选择格式导出(需确保已引入前端资源)[^1] #### 4. 高级配置示例 ```java @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .securitySchemes(Collections.singletonList(new ApiKey("token", "token", "header"))) .select() .apis(RequestHandlerSelectors.basePackage("com.example")) .paths(PathSelectors.any()) .build() .ignoredParameterTypes(HttpServletRequest.class); // 过滤特定参数 } ``` #### 5. 功能对比与局限 | 特性 | Swagger-Bootstrap-UI 1.9.3 | knife4j | |--------------------|----------------------------|--------------------| | 接口排序 | 基础分组排序 | 支持自定义排序规则 | | 动态参数调试 | 手动添加Header | 可视化参数管理 | | 文档权限控制 | 需自行整合安全框架 | 内置登录鉴权 | **建议**:如需完整的增强功能(如接口排序算法、OAuth2集成),推荐迁移至knife4j,仅需替换依赖为: ```xml <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> <version>3.0.3</version> </dependency> ``` 并添加$@EnableKnife4j$注解[^3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值