背??景最近栈长发现国内的一些开源项目使用了Knife4j技术,而且名字很犀利!它是这样的首字母缩略词吗:Knife4j=KnifeforJava?爪哇匕首?它看起来很棒,当然,这是我简单的猜测,我无法从字面上猜出它是做什么用的!那么它是一个什么样的框架呢?Knife4j简介Knife4j的前身是swagger-bootstrap-ui,其实是一个纯SwaggerUI皮肤项目。用过Swagger的应该都知道,SwaggerUI不是很好用,也不适合国人,于是swagger-bootstrap-ui项目诞生了。为了满足很多个性化的需求,swagger-bootstrap-ui增加了很多丰富的服务端特性。它不再仅仅专注于前端UI皮肤,所以更名为:knife4j。knife4j这个名字是希望它能像匕首一样小巧轻便,功能强大,也希望它能成为Swagger接口文档服务的通用增强解决方案。Knife4j于2017年由中国程序员小明开源,到现在已经4年多了,Star数超过4.7k+:Knife4j还获得了GVP项目称号,是最有价值的开源项目Gitee的,我发现现在越来越多的开源项目在用它,SwaggerUI可以扔掉了。.官网地址:https://doc.xiaominfo.com/kni...开源地址:https://gitee.com/xiaoym/knife4jKnife4j界面欣赏Knife4j使用Vue+DesignVue组件重写,以及相关界面拿出来给大家欣赏。界面文档展示界面:界面调试界面:SwaggerModels功能:支持导出离线Markdown,Html:knife4j真的很强大,整个界面基于左右菜单布局,支持多个tab打开显示切换同时,文档和调试也更加清晰,感觉更符合国人的操作习惯。.Knife4j实战Knife4j目前主要支持Java开发,支持SpringMVC、SpringBoot、SpringCloud框架的集成使用。本文以SpringBoot为基础进行实战:SpringBoot2.5.0Knife4j2.0.9Maven3.6.3JDK1.8注意:使用Knife4j2.0.6+版本,SpringBoot版本需要2.2.x+1,Knife4j依赖介绍com.github.xiaoyminknife4j-spring-boot-starter2.0.92.Knife4j配置开启增强功能andBasicloginauthentication:knife4j:#enableenhancedenable:true#enableloginauthenticationbasic:enable:trueusername:testpassword:test支持个性化配置项,如接口地址,接口描述属性,UI增强等个性化配置功能:/***Knife4j配置类*来源微信公众号:Java技术栈*作者:栈长*/@Configuration@EnableSwagger2WebMvcpublicclassKnife4jConfiguration{@Bean(value="defaultDocket")publicDocketdefaultDocket(){//联系方式Contactcontact=newContact("公众号:Java技术栈","https://www.javastack.cn","xx@javastack.cn");//创建DocketDocketdocket=newDocket(DocumentationType.SWAGGER_2).apiInfo(newApiInfoBuilder().title("Knife4j测试").description("Knife4j测试").termsOfServiceUrl("https://www.javastack.cn").contact(联系人).version("1.0").build()).groupName("1.x").select().apis(RequestHandlerSelectors.basePackage("cn.javastack.springboot.knife4j.api")).paths(PathSelectors.any()).build();返回摘要;}}SpringBootBasics我就不介绍了,送你一份《Spring Boot 学习笔记》,高清理论+实战版,跟着学习,没办法,最新版正在努力更新中,你可以持续关注公众号Java技术栈,第一时间分享给大家3.新增测试接口新增两个测试接口,一个用于登录(POST),一个用于问候(GET)。/***Knife4j测试接口*来源微信公众号:Java技术栈*作者:StackManager*/@Api(tags="测试模块")@RestControllerpublicclassKnife4jController{/***你好Knife4j测试接口*来源微信:Java技术栈*作者:StackManager*/@ApiImplicitParam(name="name",value="name",required=true)@ApiOperation(value="公众号JavaTechnologyStackGreetingstoyou!")@ApiOperationSupport(order=2,author="Stacklength")@GetMapping("/knife4j/hi")publicResponseEntityhello(@RequestParam(value="name")Stringname){returnResponseEntity.ok(“你好:”+姓名);}/***Knife4j测试界面登录*来源微信公众号:Java技术栈*作者:StackManager*/@ApiImplicitParams({@ApiImplicitParam(name="用户名",value="用户名",required=true),@ApiImplicitParam(name="password",value="password",required=true)})@ApiOperation(value="接口登录!")@ApiOperationSupport(order=1,author="Stacklength")@PostMapping("/knife4j/login")publicResponseEntitylogin(@RequestParam(value="username")Stringusername,@RequestParam(value="password")Stringpassword){if(StringUtils.isNotBlank(username)&&"javastack".equals(password)){returnResponseEntity.ok("登录成功:"+用户名);}returnResponseEntity.ok("用户名或密码错误:"+username);}}为了支持接口顺序和接口作者,上面使用了Knife4j的@ApiOperationSupport注解,其他都是Swagger自带的注解,从这个目录开始,还支持如下注解:可以去官方网站以了解更多信息。完整的Demo代码就不一一贴出来了。本节教程所有实战源码已上传至本仓库:https://github.com/javastacks...4.Knife4j测试启动应用,打开Knife4j文档页面:http://localhost:8080/doc.html主页会显示一些配置的文档参数和接口统计信息,在主页模块菜单中也可以看到我们测试模块的两个接口。接口文档:调试它:堆栈领导者在这里使用接口排序和接口作者功能。此外,它还支持分组排序、自定义文档、Swagger资源保护、导出Markdown、参数缓存等诸多强大功能,多达29项增强功能,有兴趣的可以自己尝试一下……要总结一下,今天栈长给大家介绍的是一个中国程序员开源的Knife4j项目,它是Swagger的增强版,无疑比SwaggerUI更强大更好,也很符合国人的使用习惯!如果你也在使用Swagger,可以考虑使用Knife4j,它不仅拥有更强大的UI,而且还有多达29项增强功能。它们不是替代关系,就像MybatisPlus和Mybatis的关系一样,可以帮助你更进一步提高开发效率。如果你也在使用Knife4j,欢迎留言分享!本教程所有实战源码已上传至本仓库:https://github.com/javastacks...好了,今天的分享就到这里,栈长会分享更多有趣的Java技术和最新技术后续资料,关注公众号Java技术栈第一时间推送。我也整理了主流的Java面试题和参考答案,在公众号后台回复关键词“面试”刷题。最后,如果觉得我的文章对你有用,动动你的小手,送给正在看的人,转发吧,原创不易,楼主需要你的鼓励。版权声明:本文为公众号《Java技术栈》原创,原创不易,转载或引用本文内容请注明出处,抄袭者一律举报+投诉,并保留追究权利法律责任。近期热点文章推荐:1.1,000+Java面试题及答案(2021最新版)2.别在满屏的if/else中,试试策略模式,真的很好吃!!3.操!Java中xx≠null的新语法是什么?4、SpringBoot2.5发布,深色模式太炸了!5.《Java开发手册(嵩山版)》最新发布,赶快下载吧!感觉不错,别忘了点赞+转发!