大家好,我是可爱又机灵的开源小妹。
今天给大家分享一个非常好用的在线文档工具:Knife4j
背景
现在分工越来越明确,做项目也都是前后端分离,这样就和前端沟通越来越多,包括现在微服务架构也越来越流行,服务就会进行拆分,各个服务之间有不同的团队开发,这个时候一份简洁完善的在线API接口就很有必要了,可以提提高大家的工作效率,减少一些不必要的沟通。Knife4j就是在线API文档的佼佼者,不仅提供了美观的在线API文档,还有其他的一些特性例如:全局参数、个性化设置、资源安全等,大家跟着小妹一块来看看吧。
快速入门
加入依赖
代码语言:javascript复制<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>2.0.9</version>
</dependency>
简单配置
代码语言:javascript复制@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端口
image-20211114190908046
选择调试,进行访问
image-20211114191030633
看起来是不是很简洁,很清楚呢,和前端小伙伴对接的效率都提高了不少。
对比
在使用Knife4j之前,小妹一直使用的是swagger,那为什么要从swagger出来入坑到Knife4j呢?
两个在简单时候用上配置&依赖都差不多,Knife4j是在swagger的ui基础上做了增强。在后端使用上基本是一样的,主要体现在前端效果上
swagger页面效果如下:
image-20211114195113293
image-20211114195138295
swagger展示api的方式是一条一条的,不像Knife4j那样是以左侧菜单的方式进行展示的,Knife4j更符合操作习惯 并且功能更丰富。
Knife4j实际上是基于swagger开发的一个增加的UI包,所以不是说swagger不够好,而是说Knife4j的页面展示或者操作更加方便。
如果正在使用swagger想转到Knife4j的话只需要稍微改动一下依赖 基本就可以转入看到Knife4j样式的在线api了。
高级使用
上面小妹介绍了Knife4j的简单使用,Knife4j还有一些其他强大的配置,更丰富的功能,跟着小妹一块去看看吧。
可以导出4种离线文档
markdown格式
html格式
word格式
OpenApi格式
全局参数设置
在进行接口调试的时候,有时需要带上头信息,如果一个一个接口写比较麻烦,Knife4j提供了全局参数设置,只需设置一遍,后续Debug调试页则会带上添加的参数。
分组搜索
代码语言:javascript复制//设置分组
.groupName("V1版本")
可以选择对应的组查看对应的api,当api多的的时候 可以输入关键字进行搜索。
小妹总结
Knife4j不止上面介绍的那几种特性设置,还有其他的例如授权、功能增强、个性化设置、国际化等等,小妹就不在这里一一介绍了。