knife4j 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
knife4j 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
knife4j 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
knife4j 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
knife4j 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !

软件简介

knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案,前身是swagger-bootstrap-ui,取名kni4j是希望她能像一把匕首一样小巧,轻量,并且功能强悍!

GitHub    Gitee    项目文档    项目demo    在线体验

knife4j的前身是swagger-bootstrap-ui,为了契合微服务的架构发展,由于原来swagger-bootstrap-ui采用的是后端Java代码+前端Ui混合打包的方式,在微服务架构下显的很臃肿,因此项目正式更名为knife4j

更名后主要专注的方面

  • 前后端Java代码以及前端Ui模块进行分离,在微服务架构下使用更加灵活
  • 提供专注于Swagger的增强解决方案,不同于只是改善增强前端Ui部分

效果:http://swagger-bootstrap-ui.xiaominfo.com/doc.html

示例:https://gitee.com/xiaoym/swagger-bootstrap-ui-demo

 

文档:https://doc.xiaominfo.com/

源码分析:https://www.xiaominfo.com/2019/05/20/springfox-0/

项目模块

目前主要的模块包括:

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

业务场景

不使用增强功能,纯粹换一个swagger的前端皮肤

不使用增强功能,纯粹换一个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-bootstrap-ui

对外提供的地址依然是doc.html

访问:http://ip:port/doc.html

即可查看文档

这是永远不会改变的

提ISSUES必看

虽然建立了QQ交流群,但是很多没用加群的朋友会通过ISSUES来反馈问题,提ISSUES本身是一个很好的技术习惯,这有助于帮助我能很好的定位问题所在,但因为我并不是实时关注,所以经常在我处理issues的时候,看到很多朋友提的问题却也无从着手,写下一些建议,希望提ISSUES的朋友能在提的时候都有涉及到:

1、swagger-bootstrap-ui和springfox-swagger的版本号,这个尤为重要,很多低版本出现的问题有可能我在新发布的版本中已经解决了,每个版本都有更新日志,可以参考这篇文档:https://doc.xiaominfo.com/changelog/

2、提ISSUES时贴图、贴代码,代码不用贴逻辑,只需要贴接口层即可,还有相关的实体类(如果有涉及的话),这些信息有助于我快速定位问题,省去了来回沟通的成本,提高大家的效率

3、在QQ交流群沟通的朋友我也希望能通过提ISSUE来记录下我们沟通的过程,我并非实时处理此问题,这让我集中再处理issues的时候有助于拉回我们彼此沟通时的场景,最终在新版本解决问题

4、swagger-bootstrap-ui使用的是传统的JS技术,jQuery+Dom操作,打包后的源码也并没有压缩处理,代码注释部分我也有说明,应该是能理解的,如果我没有及时处理碰到的问题,欢迎大家提交pr,毕竟众人拾柴火焰高嘛

项目Demo示例

Demo示例见另外项目地址:https://gitee.com/xiaoym/swagger-bootstrap-ui-demo

模块 说明
knife4j-spring-boot-demo 在Spring Boot架构下集成knife4j的项目示例
knife4j-spring-boot-single-demo 在Spring Boot单体架构下集成knife4j的项目示例
knife4j-spring-cloud-gateway 在Spring Cloud微服务架构下通过gateway网集成knife4j的示例
swagger-bootstrap-ui-demo-mvc 在Spring MVC模式下集成swagger-bootstrap-ui
swagger-bootstrap-ui-demo 在Spring Boot单体架构下集成swagger-bootstrap-ui
swagger-bootstrap-ui-gateway 在Spring Cloud微服务架构下通过gateway网关集成swagger-bootstrap-ui
swagger-bootstrap-ui-zuul 在Spring Cloud微服务架构下通过zuul网关集成swagger-bootstrap-ui

界面效果

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (28)

加载中
打分: 力荐
刀哥加油
01/09 10:26
回复
举报
必须支持
2020/12/03 09:04
回复
举报
打分: 力荐
已投票。我还在用1.9.6
2020/11/02 11:05
回复
举报
这个必须赞
2020/07/17 17:00
回复
举报
八一菜刀软件作者
chrome的扩展程序来了:https://my.oschina.net/u/254762/blog/3049459
2019/05/14 17:25
回复
举报
你好,我想请问一下怎样将Rest<<>>这样的在Swagger Models中隐藏,也就是不显示统一返回结果的具体实例。
2019/04/29 15:23
回复
举报
八一菜刀软件作者
文档地址已更换: http://doc.xiaominfo.com/
2019/04/12 12:18
回复
举报
该评论暂时无法显示,详情咨询 QQ 群:912889742
八一菜刀软件作者
😏最新最全面文档地址:http://www.xiaominfo.com/swagger-bootstrap-ui/
2019/01/14 09:51
回复
举报

引用来自“八鼎网络”的评论

在本地可以用 http:/localhost:8080/doc.html打开,部署到服务器, 报404错误,提示没有doc.html,请问是什么原因?
应该是你的打包出问题了
2019/01/04 14:15
回复
举报
你少加了: registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
2020/08/03 14:02
回复
举报
更多评论
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
2019/04/28 20:35

springfox-swagger之swagger-bootstrap-ui

swagger-bootstrap-ui是国内的一个swagger开源项目,从发起到现在已经有三年了。 初次体验了一下,觉得还是挺不错的,就如当初使用mybatis-plus那样,因为有了mybatis的基础,所以过渡到mybatis-plus很没有压力。 现在由swagger2到swagger-bootstrap-ui也是没有压力的,基本上参考官方文档就能弄好了。 目前我应用在我个人的博客项目上,效果如图: 关于如何搭建步骤,我主要是参考官方文档,我本次写的就作为官方文档的一点补充...

0
1
发表了博客
2019/09/02 14:59

swagger-ui升级swagger-bootstrap-ui界面好看到起飞

如果项目已经集成了swagger,只需要在pom.xml添加,如果你的项目没有集成swagger,自行百度或看最下方的链接 swagger-bootstrap-ui是Swagger的前端UI实现,目的是替换Swagger默认的UI实现Swagger-UI,使文档更友好一点儿.... swagger-bootstrap-ui 只是Swagger的UI实现,并不是替换Swagger功能,所以后端模块依然是依赖Swagger的,需要配合Swagger的注解达到效果 <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>...

0
0
发表于大前端专区
2019/05/14 16:22

基于Chrome浏览器的swagger-bootstrap-ui

# swagger-bootstrap-ui-extension ## 简介 随着`swagger-bootstrap-ui`已经历时两年多,发布了26个版本,目前也得到的很多Java开发者的青睐,如果你是使用Swagger来构建你的文档服务,那么,`swagger-bootstrap-ui`你一定不容错过 正因为如此,在Java领域已经非常方便的集成到项目中了,但因为Swagger本身是规范框架,所以只要是支持Swagger的语言,都应该能使用`swagger-bootstrap-ui`这款渲染ui程序,但是由于时间原因,我一直没有将静态...

1
0
2019/06/23 16:52

API管理-舍弃springfox-swagger-ui,采用功能更加丰富的swagger-bootstrap-ui

1. 为什么要使用swagger-bootstrap-ui? 上一篇博客(API管理-基于SpringBoot项目集成swagger实现接口文档自动生成)中我已经提到过使用springfox-swagger-ui的部分问题,上下结构的接口层次不利于接口的查看、无法支持离线下载成pdf或word或html等,而swagger-bootstrap-ui的出现把这些问题都解决了并且还扩展了部分实用新功能,比如:新增接口页面权限功能.. swagger-bootstrap-ui 对比springfox-swagger-ui原生ui有哪些优点:...

0
1
发表了博客
2019/10/22 10:16

在spring Boot中使用swagger-bootstrap-ui

转载: https://www.cnblogs.com/fby698/p/11581845.html 把swagger-ui换成swagger-bootstrap-ui (换成swagger-bootstrap-ui更加方便调试和导出文档) GitHub地址: https://github.com/xiaoymin/swagger-bootstrap-ui 使用文档: https://www.w3cschool.cn/swaggerbootstrapui/swaggerbootstrapui-s2ox32i5.html markdown与word相互转换工具:Writage 转载: https://blog.csdn.net/luxiangzhou/article/details/83616574 在线markd...

0
0
发表于程序人生专区
01/19 17:33

SpringBoot 集成 Swagger-Bootstrap-UI

作者:youcongtech segmentfault.com/a/1190000038170506 之前在创业公司待的时候,用过swagger,因为我第一天来这家公司工作,第一个任务就是做接口文档自动化。 后来觉得它不太好用,在浏览技术网站的时候,偶然发现swagger-bootstrap-ui,于是便重构了,把swagger-bootstrap-ui整合进来,后来发现不仅仅对我们后端有帮助,主要方便我们将接口进行归类,同样对安卓小伙伴也有帮助,他们可以看这个接口文档进行联调。当初我使用...

0
0
发表了博客
2019/09/24 23:16

在spring Boot中使用swagger-bootstrap-ui(原文)

1.swagger简介 Swagger是一个API接口管理工具,支持在线测试接口数据,根据配置自动生成API文档,结合spring mvc而提供界面化方法文档的一个开源框架。 1.1Swagger主要的项目 Swagger是一组开源项目,主要项目如下: Swagger-tools:提供各种与Swagger进行集成和交互的工具。例如模式检验、Swagger 1.2文档转换成Swagger 2.0文档等功能。 Swagger-core: 用于Java/Scala的的Swagger实现。与JAX-RS(Jersey、Resteasy、CXF…)、Ser...

0
0
发表了博客
2020/10/08 08:00

swagger UI

Swagger UI Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。 作用: •接口的文档在线自动生成。•功能测试。 Swagger是一组开源项目,其中主要要项目如下: •Swagger-tools:提供各种与Swagger进行集成和交互的工具。例如模式检验、Swagger 1.2...

0
0
发表了博客
2020/09/16 10:39

springboot集成swagger-bootstrap-ui(knife4j)

本文只做集成,其他功能可依据官网实现。 1、官网地址 https://doc.xiaominfo.com 2、目录结构 3、pom依赖 <!--swagger-api--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>${swagger.version}</version> </dependency> <!--swagger-bootstrap-ui--> <dependency>     <groupId>com...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
07/27 14:05

knife4j - 我的返回数据是加密后的结果,如何使用After Script功能设置全局请求头?

我的数据返回格式: { "code": 200, "success": true, "data": "fd3cc378a708077e160620919536bd4b4e60a551793366c3942836fb595ab044b82d36257c9fa1b606288e2c2d34997a74f6b016531c6816dae71da3ebd5b64457a8fb9470cd593af60e4ce37980c322869a2418efe5b872502b0330eb62e43216b4822060f4661e12ef1d4457235017eab2fa7f672f76b1913c08aa5bf67c347aa32dc4c9ae9c7f24de52e3a8dd7d35457f38cc8d64f49f106ec3861c8b466d5e...

1
0
07/15 17:29

版本控制不生效

对应的版本控制并没有体现出来

1
0
07/21 18:06

SpringCloudGateway中集成knife4j 在访问微服务的路径时 提示404

gateway依赖的pom文件 微服务的依赖

2
0
07/21 12:13

增强特性中的增强模式问题

@八一菜刀 你好,想跟你请教个问题: knife4j.basic.username 和 knife4j.basic.password 的使用是需要开启增强模式,本项目使用的是security,发现配置的用户名和密码会先走UserDetailsService接口中的loadUserByUsername方法,同时这个username和password是否必须在数据库中存在,才能正常通过判断吗?这样做是否合理呢,在配置文件中需要配置用户信息,而不是一个单一的访问接口用户密码。 if (iptUser.equals(userName)&&ip...

1
0
07/14 16:30

我的返回值是map形式的,但是我又想添加注释可以在返回参数中显示,以方便前端可以看到出参,在knife4j中应该怎么做?

最近使用knife4j,因为我们的返回值是map,所有前端看不到出参,现在想通过注解的方法在knife4j的可视化界面中响应参数中显示,应该怎么做?

4
0
05/25 16:28

求助:We're sorry but knife4j-vue doesn't work properly without JavaScript enabled.

We're sorry but knife4j-vue doesn't work properly without JavaScript enabled. Please enable it to continue. 谢谢各位大佬

2
0
发表于程序人生专区
07/14 16:15

能进knife4j的页面但是扫不到打了注解的接口

1.依赖 <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> <version>2.0.7</version> </dependency> 2.knife4j配置 @Configuration @EnableSwagger2WebMvc public class Knife4jConfiguration { @Bean(value = "defaultApi2") public Docket defaultApi2() { Docket docket=new Docket(DocumentationType.SWAGGER_2) ...

1
0
07/05 15:26

聚合网关文档不显示body请求参数和相应参数

分模块开发的 ApiModel是放在另外一个Module,Gateway访问swagger没有body的请求参数和响应参数, 不通过gateway访问swagger文档没问题。通过网关就没有请求参数和响应参数。

1
0
06/10 07:10

knife4j无法正常显示,请求webjars/js/chunk-vendors.9ff0f717.js的时候出现乱码

集成springmvc的时候出现请求webjars/js/chunk-vendors.9ff0f717.js的时候出现异常的乱码,导致文档无法正常显示 使用的版本是 检查了web.xml的配置,配置了UniEncoding为UTF-8,knife4j的作者的demo项目knife4j-spring-mvc-demo请求 ebjars/js/chunk-vendors.9ff0f717.js显示正常如下 正常的应该是...

3
0
发表于开源治理专区
06/16 13:18

@Api(tags = "testController", description = "测试使用") 不显示description 内容

在knife4j-spring-boot-starter 2.0.3中集成后,怎么显示出标记类中的@Api(tags = "testController", description = "测试使用") description 内容

1
0
发表于程序人生专区
06/16 10:03

使用Knife4j后,程序启动一段时间提示内存溢出

如题,报错如下: 2021-06-15 20:33:29.851 ERROR [main] 6381 - o.s.boot.SpringApplication - Application run failed org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.OutOfMemoryError: Java heap space at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:18...

1
0
发表于开发技能专区
05/11 22:05

sprongboot 整合 Knife4j 怎么代码设置全局公共参数?

sprongboot 整合 Knife4j 怎么代码设置全局公共参数?

1
0
发表于开发技能专区
05/31 14:52

knife4j中请求数据类型显示是BUG还是我配置的不对

在@PostMapping和@ApiOperation里面都配置了 consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE 为什么接口上还显示

1
0
06/01 14:44

knife4j增强后过滤请求参数 在knife4j显示正常 但是在yapi自动导入swagger不起作用 怎样处理

knife4j增强后过滤请求参数 在knife4j显示正常 但是在yapi自动导入swagger knife4j过滤请求参数不起作用 怎样处理让yapi导入的swagger数据和knife4j一样的

1
0
发表于开发技能专区
05/31 15:01

knife4j中请求数据类型显示是BUG还是我配置的不对

我在@PostMapping和@ApiOperation中都配置了 consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE 为什么接口文档上还显示 请求数据类型application/x-www-form-urlencoded

1
0
发表于开发技能专区
05/28 11:59

.OpenApiExtensionResolver' that could not be found.

启动失败,错误信息:, Parameter 0 of constructor in com.simshine.config.SwaggerConfiguration required a bean of type 'com.github.xiaoymin.knife4j.spring.extension.OpenApiExtensionResolver' that could not be found. Action: Consider defining a bean of type 'com.github.xiaoymin.knife4j.spring.extension.OpenApiExtensionResolver' in your configuration. 配置文件: import com.fasterxml.classmate.Typ...

2
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
28 评论
497 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部