一款强大的API接口文档管理工具(Smart-Doc + Torna)

2023-11-18

【本文由龙飞同学供稿】

在团队协作开发项目的时候,接口文档承担着向其他开发人员说明接口相关信息的重要任务,因此,一份清晰而又相近的接口文档至关重要。

但是,写接口文档的痛苦想必各位开发人员都体验过,明明写接口的时候那么丝滑,写接口文档的时候像要老命一样各种核对数据格式、文档格式,最后还有可能漏掉那么一些示例导致调用不成功,继续和其他开发沟通……还有接口文档的更新问题,一旦要更新接口文档,就意味着要给所有用着接口文档的同事一一联系,想想就令人摸不着头发……

以上这些让人头秃的痛点驱使着我寻找一个可以自动生成文档,并且可以将文档展示在线上的工具。一来可以省去大量编写接口文档的时间,在不受折磨的情况下生成高可靠性的文档;二来在更新接口文档之后,使用的还是同一个链接,不用再一一通知,对于我这样的社恐来说简直再好不过。

那么闲言少叙,进入今天的正题,Smart-Doc + Torna的生成和管理接口文档解决方案。

Smart-Doc

首先放项目地址文档

smart-doc是一款同时支持JAVA REST API和Apache Dubbo RPC接口文档生成的工具,smart-doc在业内率先提出基于JAVA泛型定义推导的理念, 完全基于接口源码来分析生成接口文档,不采用任何注解侵入到业务代码中。你只需要按照java-doc标准编写注释, smart-doc就能帮你生成一个简易明了的Markdown、HTML5、Postman Collection2.0+、OpenAPI 3.0+的文档。

简单来说,在简单配置之后,只要代码写的规范、注释写的够全,就能自动生成文档,无需对项目逻辑做修改、也不用添加额外注解。

配置方法在这

Torna

还是先放项目地址文档

接口文档解决方案,目标是让接口文档管理变得更加方便、快捷。Torna采用团队协作的方式管理和维护接口文档,将不同形式的文档纳入进来统一维护。

Torna提供了强大的API管理功能,并且有开放的API,通过这些API可自动将文档推送到Torna企业级接口文档管理平台。

使用方法和配置方法在这

Smart-Doc和Torna配合使用

前置条件

配合使用的基础是:

1、Smart-Doc已经配置好了,至少成功生成本地文档。

2、Torna配置好了,成功登录服务端。

满足以上两点,就可以着手将两个模块接一起了,Torna在官方文档中也给出了详细的方法步骤,点这

通过这套组合可以实现:只需要写完Java注释就能把接口信息推送到Torna平台,从而实现接口预览、接口调试。

效果展示

最终的效果就和Torna文档里展示的一样,为了方便起见,我直接用文档的示例做说明。

比如有一个接口定义如下:

/**
 * 产品模块
 *
 * @author thc
 */
@RestController
@RequestMapping("shop/product")
public class ProductController {

    /**
     * 查询产品
     *
     * @param productNo 产品id|123
     * @return
     */
    @GetMapping
    public Result<ProductVO> get(@RequestParam Integer productNo) {
        ProductVO productVO = new ProductVO();
        productVO.setProductNo(String.valueOf(productNo));
        return Result.ok(productVO);
    }

}

其中ProductVO的结构是:

public class ProductVO {
    /**
     * 产品id
     *
     * @mock aa
     */
    private String productNo;

    /**
     * 备注
     *
     * @mock xxx
     */
    private String remark;

    /**
     * 产品详情
     *
     * @mock
     */
    private ProductDetailVO productDetailVO;
    
    ... 省略getter setter   
}

那么生成的接口文档效果如下:
在这里插入图片描述对照着看一下,可以发现Smart-Doc + Torna的方案生成的接口文档,请求参数和响应参数的描述和示例都非常详尽,在方便接口对接的同时,也大大减轻了开发人员的负担。

踩过的坑

文档上的东西还是很细的,但是在配置和使用过程中仍然会踩坑,这里说一下踩过的每一个坑。

appKey

在Smart-Doc的文档中提到Torna从1.11.0版本开始,使用smart-doc推送文档数据已经不再需要配置appKey和secret, 仅需要配置appToken即可,因此建议升级Torna版本。。我用的版本组合是Smart-Doc:2.5.3+Torna:1.16.3,按文档的说法是不需要配置appKey的,但是在实际使用中发现文档生成后网Torna上推送的时候怎么都不成功。

后来在调试的时候发现,推送还是验证了appKey,不过只要不是null就能通过验证,所以在每个模块的smart-doc.json中都配置了"appKey":"xxx",然后就推送成功了。

appToken

这个倒不是跟文档描述不一致,只是理解出现了偏差。

当子模块有多个的时候,需要在torna中新建对应的模块,每个模块有一个单独的appToken,然后给不同的子模块配置不同的appToken。

我刚开始不知道需要给每个子模块单独配appToken,导致我的文档推送的时候,后一个子模块就把前一个子模块的文档覆盖了,只有最后一个子模块的文档能看到。

总结

Smart-Doc + Torna的生成和管理接口文档解决方案只需写好注释、规范代码,就能通过对注释和实体类的解析来生成示例详尽的接口文档,适用范围很大;由于其对代码零侵入的特性,不用改动业务代码就能使用,对旧代码也很友好。

并且根据我这俩月的使用体验来说,非常丝滑,还能鞭策我在写代码的时候注意代码规范、好好写注释,使我的代码质量有了提升。

总之就是非常不错,嗯。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一款强大的API接口文档管理工具(Smart-Doc + Torna) 的相关文章

  • Jackson JSON + Java 泛型

    我正在尝试将以下 JSON 反序列化 映射到List
  • Java将字符串解析为double

    如何解析字符串中的这个 Double 00034800 变成 Double 值 最后两位数字实际上是小数点 所以我正在寻找的结果是348 00 是否有这样的格式可以与十进制格式一起使用 Well String s 00034800 doub
  • Android:如何暂停和恢复可运行线程?

    我正在使用 postDelayed 可运行线程 当我按下按钮时 我需要暂停并恢复该线程 请任何人帮助我 这是我的主题 protected void animation music6 music4 postDelayed new Runnab
  • 我们可以有条件地声明 spring bean 吗?

    有没有一种方法可以有条件地声明 Spring bean 例如
  • Java中Gson、JsonElement、String比较

    好吧 我想知道这可能非常简单和愚蠢 但在与这种情况作斗争一段时间后 我不知道发生了什么 我正在使用 Gson 来处理一些 JSON 元素 在我的代码中的某个位置 我将 JsonObject 的 JsonElements 之一作为字符串获取
  • 使用 OkHttp 下载损坏的文件

    我编写的下载文件的方法总是会产生损坏的文件 public static String okDownloadToFileSync final String link final String fileName final boolean te
  • getCurrentSession 在网络中休眠

    我正在使用 hibernate 和 jsp servlet 编写一个基于 Web 的应用程序 我读过有关sessionFactory getCurrentSession and sessionFactory openSession方法 我知
  • 使用 JDBC 连接到 PostgreSql 的本地实例

    我在 Linux 机器上有一个正在运行的 PostgreSql 本地实例 当我使用psql来自 shell 的命令我成功登录 没有任何问题 我需要通过 JDBC 连接到 PostgreSql 但我不知道我到底应该传递什么url参数为Driv
  • 为什么解析这个 JSON 会抛出错误?

    我正在尝试解析这个 JSONObject query yahoo count 1 results rate Name USD INR id USDINR Time 12 19pm Date 10 31 2015 Bid 65 405 Ask
  • 如何自定义舍入形式

    我的问题可能看起来很简单 但仍然无法得到有效的东西 我需要自定义 Math round 舍入格式或其他格式以使其工作如下 如果数字是 1 6 他应该四舍五入到 1 如果大于或等于 1 7 他应该四舍五入到 2 0 对于所有其他带有 6 的小
  • Java 8 Stream,获取头部和尾部

    Java 8 引入了Stream http download java net jdk8 docs api java util stream Stream html类似于 Scala 的类Stream http www scala lang
  • 按降序排序映射java8 [重复]

    这个问题在这里已经有答案了 private static
  • Tomcat 6 未从 WEB-INF/lib 加载 jar

    我正在尝试找出我的 tomcat 环境中的配置问题 我们的生产服务器正在运行 tomcat 安装并从共享 NFS 挂载读取战争 然而 当我尝试使用独立的盒子 及其配置 进行同样的战争时 我收到下面发布的错误 有趣的是 如果我将 WEB IN
  • java实现excel价格、收益率函数[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 我所有的 java 应用程序现在都会抛出 java.awt.headlessException

    所以几天前我有几个工作Java应用程序使用Swing图书馆 JFrame尤其 他们都工作得很好 现在他们都抛出了这个异常 java awt headlessexception 我不知道是什么改变了也许我的Java版本不小心更新了 谢谢你尽你
  • Java 中清除嵌套 Map 的好方法

    public class MyCache AbstractMap
  • Selenium 单击在 Internet Explorer 11 上不起作用

    我尝试在 Internet Explorer 上单击 selenium 但它不起作用 我努力了element click moveToElement element click build perform javascript没事了 事实上
  • 如何让 Firebase 与 Java 后端配合使用

    首先 如果这个问题过于抽象或不适合本网站 我想表示歉意 我真的不知道还能去哪里问 目前我已经在 iOS 和 Android 上开发了应用程序 他们将所有状态保存在 Firebase 中 因此所有内容都会立即保存到 Firebase 实时数据
  • 在会话即将到期之前调用方法

    我的网络应用程序有登录的用户 有一个超时 在会话过期之前 我想执行一个方法来清理一些锁 我已经实现了sessionListener但一旦我到达public void sessionDestroyed HttpSessionEvent eve
  • 关闭扫描仪是否会影响性能

    我正在解决一个竞争问题 在问题中 我正在使用扫描仪获取用户输入 这是 2 个代码段 一个关闭扫描器 一个不关闭扫描器 关闭扫描仪 import java util Scanner public class JImSelection publ

随机推荐

  • 什么吃掉了我的硬盘?

    什么吃掉了我的硬盘 http www am82 com houzan archives 4550 posted on 2010 08 15 20 29 lexus 阅读 评论 编辑 收藏 转载于 https www cnblogs com
  • L2TP和PPTP的区别

    用最短的时间搞清楚L2TP和PPTP的区别 一 相关知识铺垫 1 虚拟隧道协议 一种通过公共网络的基础设施 在专用网络或专用设备之间实现加密数据通信的技术 通信的内容是可以是任何通信协议的数据包 隧道协议将这些协议的数据包重新封装在新的包中
  • 离散系统的变换域分析【数字信号处理四】

    离散系统的变换域分析 一 求系统H z 的零 极点 幅频响应和相位响应 二 用Matlab验证DFT运算的对称性质 三 产生数字线性调频信号 分析时域波形和频谱特性 四 设计简单的OFDM系统 并验证循环前缀的作用 一 求系统H z 的零
  • (黑客)自学笔记

    一 自学网络安全学习的误区和陷阱 1 不要试图先成为一名程序员 以编程为基础的学习 再开始学习 行为 从编程开始掌握 前端后端 通信协议 什么都学 缺点 花费时间太长 实际向安全过渡后可用到的关键知识并不多 很多安全函数知识甚至名词都不了解
  • Xception论文解读

  • make/makefile的使用

    make makefile 文章目录 make makefile 初步认识makefile的工作流程 依赖关系和依赖方法 make的使用 总结 make是一个命令 是一个解释makefile中指令的命令工具 makefile是一个文件 当前
  • oracle数据库中输入date类型的数据

    给oracle数据库已有记录中更新date类型的数据 插入date类型的格式 to date 2016 01 03 12 23 19 yyyy mm dd hh24 mi ss 2016 01 03 12 23 19 表示想要插入的时间 y
  • 华为鸿蒙os今日新闻,华为正式发布鸿蒙OS,却再次被质疑

    6月2日 市场瞩目的鸿蒙产品发布会成功举办 此次华为还连发三款搭载鸿蒙系统的硬件 华为 MatePad Pro 平板 华为 Watch 3 智能手表和华为 FreeBuds 4 TWS 耳机 但事情总有两面性 喜欢你的不论你做什么都会被看好
  • 小白入坑-利用express构建一个简单的Node项目

    做了部分前端的东西 当然不能局限眼前的成果 梦想能成为全栈的大佬 然后左手一个小姐姐 右手一个富萝莉 走远了 奈于java对前端来说比较难 耗费的学习时间也比较长 所以先从node下手过一下瘾儿 首先 win r打开windows的运行框
  • 什么是堡垒机

    什么是堡垒机 1 堡垒机是用来解决 运维混乱 的 堡垒机是用来干什么的 简而言之一句话 堡垒机是用于解决 运维混乱 的 何谓运维混乱 当公司的运维人员越来越多 当需要运维的设备越来越多 当参与运维的岗位越来越多样性 如果没有一套好的机制 就
  • Git入门超详细文档

    Git Git概述 Git是一个免费的 开源的分布式版本控制系统 可以款速高效的处理从小型到大型的各种项目 Git易于学习 占地面积小 性能极佳 它具有廉价的本地库 方便的暂存区域和多个工作流分支等特性 其性能优于Subversion CV
  • 试除法判定质数模板题

    试除法判定一个数是否为质数类似于这道题 代码 include
  • mac文件夹权限的@

    demo是网站根目录 终端下执行 cd到demo ls l 显示 drwxr xr x 9 andy admin 306 10 12 17 43 demo 这里的 貌似是mac特有的 第一次使用file put contents往根目录添加
  • QMutex使用时遇到的错误

    class A public explicit A QObject parent 0 A public QMutex m mutex class B public explicit B QObject parent 0 B private
  • C语言笔记 第三章 键盘输入与输出

    文章目录 1 printf 1 1 整型 1 2 字符型 1 3 浮点型 1 4 其他 1 4 1 标志 1 4 2 输出最小宽度 1 4 3 精度 1 4 4 类型长度 1 5 转义字符 2 scanf 2 1scanf 函数的一般形式
  • 网络安全----应急响应入侵排查

    系列文章目录 Web网络安全 红蓝攻防之信息收集 Web网络安全 Log4j高危漏洞原理及修复 Shell分类详解 图形界面 命令行式 Linux安全 应急溯源常用命令 记一次实战成功溯源反制getshell 文章目录 系列文章目录 一 应
  • ADS1256驱动程序

    1 初始化 接口 SPI2 STM32 ADS1256 NSS PB12 CS SCK PB13 SCLK MISO PB14 DOUT MOSI PB15 DIN PB10 DRDY PB11 RESET
  • 感知机介绍及实现

    感知机 perceptron 由Rosenblatt于1957年提出 是神经网络与支持向量机的基础 感知机是最早被设计并被实现的人工神经网络 感知机是一种非常特殊的神经网络 它在人工神经网络的发展史上有着非常重要的地位 尽管它的能力非常有限
  • 错误ValueError: Buffer dtype mismatch, expected ‘float32_t‘ but got ‘double

    PCL库调用错误 cloud0 from array all pointcloud world File pcl pxi PointCloud PointXYZ 180 pxi line 160 in pcl pcl PointCloud
  • 一款强大的API接口文档管理工具(Smart-Doc + Torna)

    本文由龙飞同学供稿 在团队协作开发项目的时候 接口文档承担着向其他开发人员说明接口相关信息的重要任务 因此 一份清晰而又相近的接口文档至关重要 但是 写接口文档的痛苦想必各位开发人员都体验过 明明写接口的时候那么丝滑 写接口文档的时候像要老