Swagger增强神器:Knife4j!用它轻松实现接口搜索、Word下载、接口过滤...

视频版内容:

Swagger 是开发中最常用的框架之一了,但 Swagger 本身又有很多不完善的地方,比如,在众多的接口中查询某一个接口,又或者是把所有的接口导出成 Word 格式等,都无法在 Swagger 中实现。

有人可能会问:为什么要把接口导成 Word 格式?这种场景还挺常见的,比如需要将接口对外部公司开放时,又或者是开发环境的网络不能对外部开放(如专线,很多医院都拉的是专线),而生产环境的 Swagger 又是关闭状态的时候,这时候只能依赖离线文档来实现接口的调用了,而离线文档最常用的格式便是 Word 了。

那么为了解决 Swagger 的这些问题,我们需要使用一个 Swagger 的增强工具来实现,而这个扩展工具就是我们今天要重点介绍的 Knife4j,那 Knife4j 长得是什么样呢?我们一起来看,如下图所示:

从这个主页可以看出,Knife4j 会将 Swagger 中设置的摘要信息(Docket)显示在欢迎页,Docket 的设置可以看我之前的文章,并且 Knife4j 还很贴心的提供了一个统计所有接口的功能,在欢迎页的最下方我们可以很清楚的看到当前 POST 接口的数量,以及 GET 的接口的数量。

PS:Knife4j 支持中文和英文两种语言展示,对于国内的小伙伴来说,可读性非常的高(因为都是中文的嘛)。

Knife4j 功能介绍

1.搜索功能

我觉得 Knife4j 最实用的一个功能就是“接口搜索”了,通过这个功能我们可以非常方便的找到我们需要的接口,如下图所示:

2.离线文档下载

Knife4j 提供了 4 种格式的离线文档下载:Markdown、Html、Word、OpenAPI 等方式,如下图所示:

3.接口过滤

可以通过 Knife4j 过滤某一类型的接口,比如过滤 GET 或者 POST 接口,如下图所示:

4.全局参数设置

如果有公共的请求参数,我们可以通过 Knife4j 轻松搞定,如下图所示:

5.更友好的接口调试

使用 Knife4j 可以更友好的实现接口调试,因为在使用 Knife4j 时,它会将必传的参数以红色边框的方式显示,这样我们就直观的区分开必填参数和非必填参数了,如下图所示:

Knife4j 使用配置

从上面的内容可以看出 knife4j 的功能是很强大的,但令我更惊喜的是它的配置异常的简单,我们只需在已经成功配置了 Swagger 的项目中(Swagger 配置可参考我的上一篇文章),添加 Knife4j 的依赖即可,配置信息如下:

<!-- https://mvnrepository.com/artifact/com.github.xiaoymin/knife4j-spring-boot-starter -->
<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>3.0.2</version>
</dependency>

经过以上简单的依赖添加之后,无需配置任何内容,我们就可以成功的使用 Knife4j 了。

访问 Knife4j

我们可以通过 http://localhost:8080/doc.html 访问 Knife4j 的主页,如下图所示:

总结

Swagger 作为非常欢迎的框架同时也存在着一些功能“缺陷”,那么为了弥补 Swagger 的不足,我们引入了 Knife4j 框架,使用 Knife4j 我们可以很方便的实现:接口搜索、离线文档下载、全局参数设置、接口过滤和更加友好的接口测试等功能。然而和它的功能同样令人惊讶的是它的配置,在使用 Knife4j 时,我们只需要在项目中添加它的引用,之后无需任何多余的操作就可以直接使用 Knife4j 了,简直完美,所以你不来试一试吗?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/544908.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

7种可能会导致内存泄漏的场景!

虽然Java程序员不用像C/C程序员那样时刻关注内存的使用情况&#xff0c;JVM会帮我们处理好这些&#xff0c;但并不是说有了GC就可以高枕无忧&#xff0c;内存泄露相关的问题一般在测试的时候很难发现&#xff0c;一旦上线流量起来可能马上就是一个诡异的线上故障。1. 内存泄露的…

logstash 过虑nginx访问日志

标题是不是可以翻译成这样&#xff1a;logstash Filters nginx access log好了&#xff0c;进入正题&#xff0c;日志管理服务器我用ElasticSearchLogStashKibanaRedis先说下我的架构&#xff1a;远程NGINX采集日志数据到REDISlogstashelasticsearchkibana服务器至于怎么部署&a…

Spring中的重试功能!嗯,有点东西

来源&#xff1a;https://albenw.github.io/posts/69a9647f/概要Spring实现了一套重试机制&#xff0c;功能简单实用。Spring Retry是从Spring Batch独立出来的一个功能&#xff0c;已经广泛应用于Spring Batch,Spring Integration, Spring for Apache Hadoop等Spring项目。 本…

关于Shell的一些常用命令

2019独角兽企业重金招聘Python工程师标准>>> ls -lat 列出当前目录所有东东的东东 ls -lath 人看的大小 ls -F | grep "/$"只搞目录 ls -lR 包括子目录… ls --ignore filename -lt 忽略某个 which&#xff0c;在PATH变量指定的路径中&#xff0c;搜索看某…

用Netty撸一个心跳机制和断线重连!

来源&#xff1a;www.jianshu.com/p/1a28e48edd92心跳机制何为心跳所谓心跳, 即在 TCP 长连接中, 客户端和服务器之间定期发送的一种特殊的数据包, 通知对方自己还在线, 以确保 TCP 连接的有效性.注&#xff1a;心跳包还有另一个作用&#xff0c;经常被忽略&#xff0c;即&…

ThreadLocal线程范围内的共享变量

模拟ThreadLocal类实现&#xff1a;线程范围内的共享变量&#xff0c;每个线程只能访问他自己的&#xff0c;不能访问别的线程。 package com.ljq.test.thread;import java.util.HashMap; import java.util.Map; import java.util.Random;/*** 线程范围内的共享变量* * 三个模块…

Java中操作Excel的3种方法,太好用了!

一、介绍在平时的业务系统开发中&#xff0c;少不了需要用到导出、导入excel功能&#xff0c;今天我们就一起来总结一下&#xff0c;如果你正为此需求感到困惑&#xff0c;那么阅读完本文&#xff0c;你一定会有所收获&#xff01;二、poi大概在很久很久以前&#xff0c;微软的…

代理服务器Tengine的研究与测试

代理服务器Tengine的研究与测试一、Tengine介绍1.首先要知道什么Nginx1)Nginx&#xff08;发音同 engine x&#xff09;是一款轻量级的Web 服务器&#xff0f;反向代理服务器及电子邮件&#xff08;IMAP/POP3&#xff09;代理服务器&#xff0c;并在一个BSD-like 协议下发行。由…

不错!SpringBoot发布Jar包优化瘦身指南!

概要说明随着Spring Boot的流行&#xff0c;大家体验到只需构建输出一个jar文件&#xff0c;然后只需一个java -jar命令就能部署运行应用的爽快。常见一些单体应用随着项目规模的扩展单个jar文件的大小越来越大&#xff0c;动辄两三百MB。如果再引入微服务架构&#xff0c;动辄…

CountDownLatch:别浪,等人齐再团!

一入王者深似海&#xff0c;从此对象是路人。哈喽观众老爷们大家好&#xff0c;我是战神吕布字奉先&#xff0c;今天给大家来一部吕布的教学视频&#xff01;咳咳&#xff0c;不对。大家好&#xff0c;我是磊哥&#xff0c;今天给大家来一篇 CountDownLatch 的文章。在开始之前…

附彩蛋|Spring Security 竟然故意延长登录时间?知道真相的我惊呆了!

2011年12月21日&#xff0c;有人在网络上公开了一个包含600万个CSDN用户资料的数据库&#xff0c;数据全部为明文储存&#xff0c;包含用户名、密码以及注册邮箱。事件发生后CSDN在微博、官方网站等渠道发出了声明&#xff0c;解释说此数据库系2009年备份所用&#xff0c;因不明…

DirectX 矩阵

基础&#xff1a; 下标&#xff1a;第一个下标为该元素所在行的索引&#xff0c;第二个下标为该元素所在列的索引。如下图所示 行向量和列向量&#xff1a;只有单行的向量称为行向量&#xff0c;只有单列的称之为列向量。 相等 维数和元素都相等 数乘(与标量相乘) 每一个元素与…

为什么阿里内部不允许用Executors创建线程池?

来源&#xff1a;cnblogs.com/zjfjava/p/11227456.html1. 通过Executors创建线程池的弊端在创建线程池的时候&#xff0c;大部分人还是会选择使用Executors去创建。下面是创建定长线程池&#xff08;FixedThreadPool&#xff09;的一个例子&#xff0c;严格来说&#xff0c;当使…

RabbitMQ中7种消息队列和保姆级代码演示!

blog.csdn.net/qq_32828253/article/details/110450249七种模式介绍与应用场景简单模式&#xff08;Hello World&#xff09;做最简单的事情&#xff0c;一个生产者对应一个消费者&#xff0c;RabbitMQ相当于一个消息代理&#xff0c;负责将A的消息转发给B应用场景&#xff1a;…

CyclicBarrier:人齐了,老司机就发车了!

作者 | 王磊来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;上一篇咱讲了 CountDownLatch 可以解决多个线程同步的问题&#xff0c;相比于 join 来说它的应用范围更广&#xff0c;不仅可…

iOS平台快速发布HT for Web拓扑图应用

iOS平台一直是封闭的生态圈&#xff0c;iOS开发者要缴纳年费加入开发者计划才可进行iOS平台的APP开发测试&#xff0c;所开发的APP需要上传到App Store经过苹果审核以后才可对外发布。如果要开发企业内部应用&#xff0c;则要缴纳更高的费用购买企业账户才可以。 对于现在火如荼…

事务注解 @Transactional 失效的3种场景及解决办法

Transactional失效场景第一种 Transactional注解标注方法修饰符为非public时&#xff0c;Transactional注解将会不起作用。例如以下代码&#xff0c;定义一个错误的Transactional标注实现&#xff0c;修饰一个默认访问符的方法&#xff1a;/*** author zhoujy**/ Component pub…

Android的多语言实现

文章转自&#xff1a;http://blog.csdn.net/barryhappy/article/details/23436527 以前就知道Android的多语言实现很简单&#xff0c;可以在不同的语言环境下使用不同的资源什么的&#xff0c;但是一直没有实际使用过。 最近公司的项目要用到多语言于&#xff0c;是就研究了一下…

厉害了,自己手写一个Java热加载!

热加载&#xff1a;在不停止程序运行的情况下&#xff0c;对类&#xff08;对象&#xff09;的动态替换。Java ClassLoader 简述Java中的类从被加载到内存中到卸载出内存为止&#xff0c;一共经历了七个阶段&#xff1a;加载、验证、准备、解析、初始化、使用、卸载。接下来我们…

公司新来的小可爱,竟然把内存搞崩了!

ThreadLocal使用不规范&#xff0c;师傅两行泪组内来了一个实习生&#xff0c;看这小伙子春光满面、精神抖擞、头发微少&#xff0c;我心头一喜&#xff1a;绝对是个潜力股。于是我找经理申请亲自来带他&#xff0c;为了帮助小伙子快速成长&#xff0c;我给他分了一个需求&…