今天给大家分享一个非常好用的在线文档工具:Knife4j

背景

现在分工越来越明确,做项目也都是前后端分离,这样就和前端沟通越来越多,包括现在微服务架构也越来越流行,服务就会进行拆分,各个服务之间有不同的团队开发,这个时候一份简洁完善的在线API接口就很有必要了,可以提提高大家的工作效率,减少一些不必要的沟通。Knife4j就是在线API文档的佼佼者,不仅提供了美观的在线API文档,还有其他的一些特性例如:全局参数、个性化设置、资源安全等,大家跟着小妹一块来看看吧。

快速入门

加入依赖


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

简单配置

@Configuration
@EnableSwagger2WebMvc
public class KnifeConfiguration {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.groupName("V1版本")
.select()
.apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("Knife Simple Demo APIs")
.description("Knife Simple Demo")
.version("1.0")
.build();
}
}

访问地址:http://localhost:8080/doc.html,其中端口是自己服务的端口信息,小妹这边配置的是8080端口

还在使用Swagger吗,快来试试这款强大的在线API工具_开源项目


还在使用Swagger吗,快来试试这款强大的在线API工具_html_02

image-20211114190908046

选择调试,进行访问

还在使用Swagger吗,快来试试这款强大的在线API工具_开源项目_03

image-20211114191030633

看起来是不是很简洁,很清楚呢,和前端小伙伴对接的效率都提高了不少。

对比

在使用Knife4j之前,小妹一直使用的是swagger,那为什么要从swagger出来入坑到Knife4j呢?

两个在简单时候用上配置&依赖都差不多,Knife4j是在swagger的ui基础上做了增强。在后端使用上基本是一样的,主要体现在前端效果上

swagger页面效果如下:

还在使用Swagger吗,快来试试这款强大的在线API工具_个性化设置_04

image-20211114195113293

还在使用Swagger吗,快来试试这款强大的在线API工具_个性化设置_05

image-20211114195138295

swagger展示api的方式是一条一条的,不像Knife4j那样是以左侧菜单的方式进行展示的,Knife4j更符合操作习惯 并且功能更丰富。

Knife4j实际上是基于swagger开发的一个增加的UI包,所以不是说swagger不够好,而是说Knife4j的页面展示或者操作更加方便。

如果正在使用swagger想转到Knife4j的话只需要稍微改动一下依赖 基本就可以转入看到Knife4j样式的在线api了。

高级使用

上面小妹介绍了Knife4j的简单使用,Knife4j还有一些其他强大的配置,更丰富的功能,跟着小妹一块去看看吧。


  • 可以导出4种离线文档

    • markdown格式html格式word格式OpenApi格式

全局参数设置

在进行接口调试的时候,有时需要带上头信息,如果一个一个接口写比较麻烦,Knife4j提供了全局参数设置,只需设置一遍,后续Debug调试页则会带上添加的参数。


还在使用Swagger吗,快来试试这款强大的在线API工具_个性化设置_06

还在使用Swagger吗,快来试试这款强大的在线API工具_开源项目_07

分组搜索

//设置分组
.groupName("V1版本")
可以选择对应的组查看对应的api,当api多的的时候 可以输入关键字进行搜索。

还在使用Swagger吗,快来试试这款强大的在线API工具_html_08