放弃丑陋的 swagger-ui,使用 knife 接口文档生成神器
文章目录
- 接口生成利器 knife 介绍
- springboot 整合 knife
- pom.xml 文件增加依赖
- 编写Swagger2Config配置文件
- 注意事项
- 总结
knife Gitee 地址:https://gitee.com/xiaoym/knife4j
接口生成利器 knife 介绍
之前项目中一直在使用 swagger 生成后台接口文档,很好用,至少比之前用 word 写接口文档 postman 调试接口方便多了。swagger 提供了一套前端页面,但是需要在代码中加入注解,如: @Api
@ApiOperation
等,耦合度比较高,但使用起来很方便。对我强迫症的我来说,swagger-ui 页面奇丑无比,给我的感觉就是特别乱,并且没办法保存常用的参数,使用起来很不方便。
这篇文章来介绍 knife,是 swagger 的增强版。该UI增强包主要包括两大核心功能:文档说明 和 在线调试
- 文档说明:根据Swagger的规范说明,详细列出接口文档的说明,包括接口地址、类型、请求示例、请求参数、响应示例、响应参数、响应码等信息,使用 knife 能根据该文档说明,对该接口的使用情况一目了然。
- 在线调试:提供在线接口联调的强大功能,自动解析当前接口参数,同时包含表单验证,调用参数可返回接口响应内容、headers、Curl请求命令实例、响应时间、响应状态码等信息,帮助开发者在线调试,而不必通过其他测试工具测试接口是否正确,简介、强大。并且可以实现缓存请求参数,设置header 或 query 全局参数和值。
功能不过多介绍,直接上图演示:
springboot 整合 knife
springboot 基本框架搭建就不过多介绍了,直接演示 springboot 整合 knife 需要改动的配置。
pom.xml 文件增加依赖
由于是 springfox-swagger
的增强UI包,所以基础功能依然依赖 swagger
,springfox-swagger
的 jar 包必须引入。然后引入 knife4j-spring-ui
替代原来的 swagger-ui
。
<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version>
</dependency><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-ui</artifactId><version>3.0.2</version>
</dependency>
编写Swagger2Config配置文件
Swagger2Config 文件内容如下:
@Configuration
@EnableSwagger2
public class Swagger2Config {@Beanpublic Docket createRestApi() {ApiInfo apiInfo = new ApiInfoBuilder().title("台接口").description("这里描述内容").contact(new Contact("Liuyanmin", "", "")).termsOfServiceUrl("http://localhost:60000/").version("1.0").build();return new Docket(DocumentationType.SWAGGER_2).host("http://localhost:60000/").groupName("后台接口").apiInfo(apiInfo).select().apis(RequestHandlerSelectors.basePackage("com.example.controller")).paths(PathSelectors.any()).build();}
}
访问地址,knife
默认访问地址是:http://${host}:${port}/doc.html
swagger-ui
的样式页面还是可以访问的,地址:http://${host}:${port}/swagger-ui.html
,这个不建议使用了,页面太丑了,了解一下就可以了。
注意事项
SpringBoot 中访问 doc.html
或 swagger-ui.html
报404的解决办法
@Configuration
public class IntercpetorConfig implements WebMvcConfigurer {@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {// 设置swagger静态资源访问registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");}
}
Springfox-swagger
默认提供的接口和依赖的资源文件需要在拦截器或权限验证中过滤掉,过滤内容如下:
/swagger-ui.html,/swagger-resources/**,/csrf,/webjars/**
总结
若项目中之前使用过 swagger
生成接口文档,改成 knife
其实很简单,只需要两步:
- pom.xml 中把
swagger-ui
jar包替换成knife4j-spring-ui
- 访问地址由原来的
http://${host}:${port}/swagger-ui.html
改成http://${host}:${port}/doc.html
就这么简单。
还有更多优秀开源的接口文档生成工具,感兴趣的可以自己看一下。
gitbook
smart-doc
redoc
yapi
apidoc
showdoc
放弃丑陋的 swagger-ui,使用 knife 接口文档生成神器相关推荐
- 推荐几款接口文档生成神器用来代替Swagger
前言 最近公司打算做一个openapi开放平台,让我找一款好用的在线文档生成工具,具体要求如下: 必须是开源的 能够实时生成在线文档 支持全文搜索 支持在线调试功能 界面优美 说实话,这个需求看起来简 ...
- 再见丑陋的 SwaggerUI,这款API文档生成神器界面更炫酷,逼格更高!
欢迎关注方志朋的博客,回复"666"获面试宝典 一般在使用 Spring Boot 开发前后端分离项目的时候,都会用到 Swagger.Swagger 是一个规范和完整的框架,用于 ...
- 扔掉Swagger,试试这款功能强大,零注解侵入的API接口文档生成工具!
欢迎关注方志朋的博客,回复"666"获面试宝典 介绍 smart-doc是一款同时支持JAVA REST API和Apache Dubbo RPC接口文档生成的工具,smart-d ...
- Swagger自动接口文档生成框架————springboot整合swagger总结
swagger简介: swagger是一款开源的api接口文档生成工具. Swagger的项目主页:https://swagger.io/ 目前比较流行的做法是在代码中加入swagger相关的注 ...
- Swagger 配置多个接口文档实现 和 实现多包扫描的配置方式
一.Swagger 配置多个接口文档实现 场景说明:在一个项目中,后台接口分为后端后台接口和小程序端接口,为了方便区分,希望将2种不同的接口分开展示. 在做当前配置之前,首先你得先配置好基础的swag ...
- spring-boot 一款无侵入型,轻量级的接口文档生成工具apiggs
spring-boot 一款无侵入型,轻量级的接口文档生成工具apiggs 名字叫:apiggs 使用只需两步,先把插件代码引入pom文件,然后编译打包即可 之后项目的target目录下,就会多出一个 ...
- 一款零注解API接口文档生成工具
smart-doc是一款同时支持JAVA REST API和Apache Dubbo RPC接口文档生成的工具,基于接口源码来分析生成接口文档,不采用任何注解侵入到业务代码中.只需要按照java-do ...
- 我发现了一款高效管理接口文档的神器
大家好,我是小孟,最近做了不少项目,后面会路线开源给大家. 做的这些项目的过程中,发现了一款接口文档的神器. 喜欢尝鲜的小伙伴可以纳拿去使用,可以找小孟一起交流呀. 也希望大家的技术一样棒棒的,然后搞 ...
- 基于文档注释接口文档生成工具(代码0侵入附源码)
本文主要分享一个基于个人兴趣,旨在提高工作效率,开发了一个基于文档注释,接口文档生成工具,欢迎大佬指点. 源码以及使用demo地址 :传送门 1.前置介绍 1.1前世 现在大多数项目都走向了前后端分离 ...
最新文章
- 如果每个人都是一个粒子…… | 从物理学中寻找社会规律
- java common http_httpClient和common-httpclient的区别
- Axure中的原型如何导出成为HTML5源码
- linux远程传文件scp和sftp详解
- java通用日志记录_JAVA实现通用日志记录方法
- ArcGIS个人数据库(mdb)中矢量字段无法删除
- 孔夫子告诉你:编程到底能教会你什么!
- MyIbatis使用trim灵活的插入
- python练手经典100例-非常适合Python菜鸟练手的趣味题(内附学习教程分享)
- chrome无法打开某些网页,但safari可以
- QT记事本的读写函数
- CANape XCP on CAN工程创建
- 三星s9更新android9.0,三星Galaxy S9/S9+ Android 9.0系统更新新进展
- oracle财务系统表,Oracle财务管理系统:会计业务周期
- 【023】翼辉信息于南京召开国产嵌入式信息产业前沿技术交流会暨SylixOS新版发布会
- 老版TP-Link路由器设置固定时间上网
- 不做自了汉,大家好才是真的好
- [Java] [SurfaceView] 使用EGL
- Python实战小项目—绘制玫瑰花送给女朋友叭
- 中文检索式问答机器人模型