网站首页 > java教程 正文
1.基本介绍
提起接口文档生成和管理的工具,大多数人第一印象都是Swagger。今天要介绍的是一种相对小众的方案:Smart-Doc+Torna。
Smart-Doc是一款接口文档生成工具,可用于生成各种格式的接口文档(如markdown、html,json等等)。
https://github.com/smart-doc-group/smart-doc
Torna是一款接口文档管理工具,可接入各种格式的接口文档,进行可视化管理。http://torna.cn/
相对Swagger,为什么选择Smart-Doc+Torna:
- Swagger需要额外引入依赖到项目中,对API信息的注解比较繁琐,对代码有侵入,遇到复杂一点的API,在Controller里面基本就全是swagger的注解,影响代码可读性。Smart-Doc是基于原生java-doc来生成接口文档,只需要正常写代码注释,就可以生成标准的API文档了。(这也反向规范了开发人员在编写代码过程添加注释)
- Swagger的接口文档管理界面,是内置到应用的,也就是要应用跑起来才能访问,如果应用挂了就访问不了。smart-doc生成接口文档信息后,可通过OpenAPI推送搭配Torna,通过Torna进行文档管理,而Torna是独立部署的,不依赖应用,且可以多个项目共用。
2.Smart-Doc基本使用
相关版本说明:
- SpringBoot版本:2.4.2
- maven版本:3.5.0
2.1.添加配置文件
一般在src/main/resource,添加smart-doc.json文件。(更多配置项可去官网了解)
2.2.添加maven插件配置
在pom.xml文件,添加构建插件配置
<!-- smart-doc -->
<plugin>
<groupId>com.github.shalousun</groupId>
<artifactId>smart-doc-maven-plugin</artifactId>
<version>2.1.8</version>
<configuration>
<!--配置文件的路径-->
<configFile>./src/main/resources/smart-doc.json</configFile>
<!--指定项目名称-->
<projectName>测试项目</projectName>
<excludes>
<!--如果是多模块项目,可排除依赖的其他模块,不影响接口生成-->
</excludes>
</configuration>
<executions>
<execution>
<goals>
<goal>html</goal>
</goals>
</execution>
</executions>
</plugin>
2.3.在接口添加注释信息
以下是例子:
2.4.运行效果
测试输出本地html文档:mvn -Dfile.encoding=UTF-8 smart-doc:html
使用IDEA的话,也可以在右侧工具栏直接双击运行也可以
输出效果:
推送到Torna可执行:mvn -Dfile.encoding=UTF-8 smart-doc:torna-rest
Torna的使用参考下一章节。
3.Torna的使用
3.1.部署Torna
参考官网的部署文档,可直接用docker部署:
http://torna.cn/dev/config.html#docker添加配置
3.2.新建项目
部署好Torna,然后访问登录并新建好对应的项目。并生成OpenAPI的Token。相关配置需要与smart-doc配置文件中一致
3.3.把接口文档推送到Torna
执行:mvn -Dfile.encoding=UTF-8 smart-doc:torna-rest
4.结语
接口文档生成和管理工具有很多种,Swagger功能全面,历史悠久,所以是目前比较主流的解决方案,但也存在对应用代码有侵入性,需要应用强依赖的缺点;技术是发展的,近几年也出了很多新的解决方案,如yapi,smart-doc;还有需要商业化的工具(商业版肯定就做得更好一点)。就开源的方案来说,我个人选择smart-doc+torna,更多的是看中他的轻量性,无侵入性,和基于原生java-doc来解析,这样也间接的要求开发人员多写注释。也欢迎大家交流下其他工具和方案。
- 上一篇: 花10分钟写个漂亮的后端API接口模板!
- 下一篇: java接口基础(java接口基础知识)
猜你喜欢
- 2025-05-02 dify案例分享-API文档生成接口代码
- 2025-05-02 从 0 到 1 实战 Spring Boot 3:手把手教你构建高效 RESTful 接口
- 2025-05-02 原来大牛们口中的接口Mock测试是长这样的,今天我终于搞懂了
- 2025-05-02 什么是函数式接口?(函数式接口使用场景)
- 2025-05-02 请求合并的三种方式,大大提高接口性能
- 2025-05-02 dify案例:dify导入本地Java接口作为function call工具
- 2025-05-02 【开源推荐】PhalApi2.13(致敬版) 发布,PHP 轻量级开源接口框架
- 2025-05-02 Java:在Java中使用私有接口方法(java中如何调用私有成员变量)
- 2025-05-02 Java接口与抽象类:核心区别、使用场景与最佳实践
- 2025-05-02 实现AI API Tokens计费产品方案和Java技术实现设计(含源码分享)
你 发表评论:
欢迎- 最近发表
-
- Java对象栈上分配(java对象分配在栈上)
- Java中类和对象到底是什么?一场技术、哲学与设计的深度探索
- VSCode手动创建SpringBoot项目的方法,及详细步骤
- Redis全栈应用实战:从缓存到分布式系统全场景解析
- 用Ansible从零开始部署Spring Boot Web应用:全栈自动化部署指南
- Docker + Kubernetes部署Java应用:从容器化到集群管理的全栈体验
- 如何成为python全栈工程师(python全栈要学多久)
- 俄罗斯程序员创建了外国Java集成开发环境的国产替代品
- Java开发环境最丝滑的打开方式(java项目开发环境)
- idea最新激活jetbrains-agent.jar包,亲测有效
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)