一直以来能够创建一个同项目一起发布的在线文档,曾经是很多程序员的梦想,偶然发现这个工具已经有了,测试之后发现还挺好用的,特地纪念。

这个工具就是knife4j,它是为Java MVC框架集成Swagger 生成Api文档的增强解决方案,其前身是swagger-bootstrap-ui。推荐采用了swagger的新增强版knife4j来生成API接口文档。knife4j的使用方法和swagger几完全一样。

1.引入pom.xml依赖:

<!--(老版本)引用依赖包-->
<dependency><groupId>com.github.xiaoymin</groupId><artifactId>swagger-bootstrap-ui</artifactId><version>1.9.6</version>
</dependency><!--(新版本)swagger增强工具依赖包,方便生成接口文档。非必须导入-->
<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>2.0.1</version>
</dependency>

2.配置SwaggerConfig类:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;@Configuration
@EnableSwagger2
public class SwaggerConfig {@Beanpublic Docket createRestApi() {return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).pathMapping("/").select().apis(RequestHandlerSelectors.any()).paths(PathSelectors.any()).build();}private ApiInfo apiInfo(){return new ApiInfoBuilder().title("SpringBoot 测试项目").description("This is a restful api document of").description("SpringBoot整合Swagger,详细信息......").version("1.0").contact(new Contact("作者","blog.csdn.net","xxxxxxx@qq.com")).license("Home").licenseUrl("http://localhost:9090/swagger-ui.html").build();}
}

可以看到,内容上和以前的swagger配置类一致的,唯一的变化是类注解需要比原来的swagger多加一个 @EnableSwaggerBootstrapUi。这样knife4j的所有配置都完成了。

以上有两个注解需要特别说明,如下:

@EnableSwagger2 
这个注解是Springfox-swagger框架提供的使用Swagger注解,该注解不可以省略

@EnableKnife4j
这个注解是knife4j提供的增强注解,Ui提供了例如动态参数、参数过滤、接口排序等增强功能,
如果你想使用这些增强功能就必须加该注解,否则可以不用加

3.在Controller上增加注解

@Api(tags = "统一异常处理测试接口")
@RestController
@RequestMapping(value="/api")
public class UserRestController {@ApiOperation(value = "新增用户",notes="新增用户,post 方式")@PostMapping("/user")public boolean insert(@RequestBody User user) {System.out.println("开始新增...");//如果姓名为空就手动抛出一个自定义的异常!if(null == user.getUsername()){throw  new BizException("-1","用户姓名不能为空!");}return true;}@ApiOperation(value = "查询用户列表",notes="查询用户列表 get 方式")@GetMapping("/users")public ResultBody findByUser(User user) {System.out.println("开始查询...");List<User> userList = new ArrayList<>();User user2 = null;for(int i=0; i<10; i++) {user2 = new User();user2.setId("user_"+i);user2.setUsername("username_"+i);user2.setNickname("laowu "+i);userList.add(user2);}return ResultBody.success(userList);}

上面就是一个普通的Controller,里面用到了2个注解:

@Api(tags = "统一异常处理测试接口"), 这个注解是类级别的注解,里面的参数tags里面其实是对当前类的功能做概况说明
@ApiOperation(value = "新增用户",notes="新增用户,post 方式")
这个ApiOperation注解是方法级的注解,是对当前的方法的功能做介绍说明,

其实swagger有很多注解,常用的是这些:

  • Api Api 用在类上,说明该类的作用
  • ApiModel 描述一个Model的信息
  • ApiModelProperty 描述一个model的属性。
  • ApiOperation 用在方法上,说明方法的作用
  • ApiParam 请求属性
  • ApiResponse 响应配置
  • ApiResponses 响应集配置
  • ResponseHeader 响应头设置

4.在SpringBoot启动类上增加注解

@SpringBootApplication
@EnableSwagger2
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}

SpringBoot启动类上需要增加@EnableSwagger2这个注解。

配置了这么多,该看看运行起来的效果了,运行springboot项目,自动生成接口文档,

访问在线API文档地址: http://localhost:8080/doc.html

访问swagger的地址:   http://localhost:8080/swagger-ui.html

这样看起来是不是比普通的Sawgger看起来功能更完善了? 左侧的导航栏可以列出当前工程里面所有的控制器,以及所有添加了Swagger注解的类。

还可以做接口测试:

比如我打开了统一异常处理测试接口这个控制器,下面会列出新增用户何查询用户列表两个方法,还贴心的列出类这里handler的请求方式,然后在右侧会打开一个标签页,标题就是这个handler注解,

@ApiOperation(value = "查询用户列表",notes="查询用户列表 get 方式")
是ApiOperation注解里面value里面的内容

在这个大标签页里面会有两个小的标签页,分别是文档和测试,默认打开的是文档这个标签页,这个标签页里是当前handler方法的比较详细的描述,接口描述的内容就是ApiOperation注解里面notes参数的值,因此在实际情况下应该把这个参数的内容写的更完善一些,测试时看起来就比较完整了。

这里列出了
接口地址
请求方式
consumes 
produces 
接口描述 
请求参数
响应状态
响应参数
响应示例
这个几个最常用到的项目。

点击右边的调试标签,打开这个接口的调试窗口

这个是完整的调试窗口,这里列出了这个接口参数的具体数据,点击发送就可以向后台发送请求,返回结果也是默认用比较美观的方式展示出来,同时还给出了 响应内容、Raw、Headers、Curl 这几个功能

  • 响应内容:是后台返回的经过美化的jsong格式
  • Raw:里面是原始的json数据
  • Headers: 请求头
  • Curl:Curl命令的具体参数,这个在Linux下测试接口非常有用

更贴心的一个功能,这里还提示类这个接口的执行时间

这个功能对于优化接口的性能很帮助。

相信看到这里的小伙伴对knif4j已经有了比较直观的认识,赶紧来试试吧。

SpringBoot集成knif4j创建在线API文档相关推荐

  1. SpringBoot集成swagger生成在线接口文档

    SpringBoot集成swagger生成在线接口文档 集成maven依赖 <dependency><groupId>io.springfox</groupId>& ...

  2. springboot集成swagger2构建RESTful API文档

    在开发过程中,有时候我们需要不停的测试接口,自测,或者交由测试测试接口,我们需要构建一个文档,都是单独写,太麻烦了,现在使用springboot集成swagger2来构建RESTful API文档,可 ...

  3. springboot 集成 swagger 自动生成API文档

    Swagger是一个规范和完整的框架,用于生成.描述.调用和可视化RESTful风格的Web服务.简单来说,Swagger是一个功能强大的接口管理工具,并且提供了多种编程语言的前后端分离解决方案. S ...

  4. 从0到1手把手搭建spring cloud alibaba 微服务大型应用框架(十五) swagger篇 : gateway 集成swagger 与 knife4j实现在线api文档并嵌入到自己项目内

    背景 我们日常开发中基本都是协同开发的,当然极个别的项目整体前后端都是一个人开发的,当多人协作时,尤其是前后端人员协同开发时 必然会面临着前端需要了解后端api接口的情况,两个选择,提前设计好文档,然 ...

  5. Spring Boot 集成 Swagger 生成 RESTful API 文档

    原文链接: Spring Boot 集成 Swagger 生成 RESTful API 文档 简介 Swagger 官网是这么描述它的:The Best APIs are Built with Swa ...

  6. 一款适合IT团队的在线API文档、技术文档工具-showdoc介绍

    还在为word文档传来传去查阅不方便而烦恼吗,还在为查看数据库字段含义不方便而烦恼吗,还在为编写接口文档而烦恼吗?今天为大家推荐一款适合IT团队的在线API文档.技术文档工具,有免费开源和在线托管的版 ...

  7. 【资源推荐】良心之作!超过 10000+ 的互联网团队正在使用的在线 API 文档、技术文档工具...

    搞开发的同学都知道一个好的 API 文档是有多重要! 每当接手一个别人开发好的项目,看着那些没有注释的代码,真的头大. 程序员都很希望别人能写技术文档,因为可以提高自己开发的效率,而往往自己却很不希望 ...

  8. 良心之作!超过 10000+ 的互联网团队正在使用的在线 API 文档、技术文档工具

    搞开发的同学都知道一个好的 API 文档是有多重要! 每当接手一个别人开发好的项目,看着那些没有注释的代码,真的头大. 程序员都很希望别人能写技术文档,因为可以提高自己开发的效率,而往往自己却很不希望 ...

  9. 最全编程语言在线 API 文档

    1.常用API文档索引 最全编程语言在线 API 文档:https://tool.oschina.net/apidocs 2.Learn X in Y minutes Learn X in Y min ...

最新文章

  1. 第一阶段用户模板和场景
  2. jscience中的parse转换
  3. [转]SQL Server 索引基础知识(2)----聚集索引,非聚集索引
  4. android广告页白屏_年度整理!2056页《大厂安卓岗面试真题解析合集》火爆全网...
  5. spring-jar包详解整理
  6. w3school---JQuery HTML
  7. SQL中exists和in的区别
  8. 设置Cookie请求头报错(Refused to set unsafe header “Cookie“)
  9. Android 使用 Gradle 打包 - 签名配置
  10. Js脚本之jQuery学习笔记(1)
  11. Python 源码剖析 目录
  12. LVDS转RGB,国产视频解码芯片,GM8284DD,替代LT8218A
  13. 苹果手机(iPhone)系统升级到IOS16.1后,发现连接WiFi、热点总是经常自动(随机)断开
  14. 运营商宽带网速为什么用bit而不用byte
  15. 【Beta】Scrum Meeting 4
  16. java inet aton_地址转换函数:inet_aton inet_ntoa inet_addr和inet_pton inet_ntop
  17. python水浒传名字次数_可视化分析《水浒传》各章回人名
  18. Kyligence 荣登福布斯中国企业科技50强榜单
  19. MyBatis-Plus 分页查询
  20. 股票个人量化交易接口最常见的趋势跟踪策略

热门文章

  1. Python基础教程,Python入门教程
  2. SAP SE16N 如何显示英文
  3. iapp上传图片到云函数
  4. 基于C++的Huffman赫夫曼编译码器开发 课程论文+项目源码及可执行exe文件
  5. python信息检索和评价系统_Python爬虫实现的微信公众号文章下载器
  6. 稳中求变,试着提高时间管理能力
  7. 云计算设计模式(二十)——调度程序代理管理者模式
  8. 电路的网孔电流法建模 matlab,第3节 网孔电流法
  9. x2检验(chi-square test)/ 卡方检验
  10. 怎么配置java环境