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

news2025/2/2 16:49:48

【本文由龙飞同学供稿】

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

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

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

那么闲言少叙,进入今天的正题,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的生成和管理接口文档解决方案只需写好注释、规范代码,就能通过对注释和实体类的解析来生成示例详尽的接口文档,适用范围很大;由于其对代码零侵入的特性,不用改动业务代码就能使用,对旧代码也很友好。

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

总之就是非常不错,嗯。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/103996.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在职读研有意义么?来社科院与杜兰大学金融管理硕士项目探寻答案

在职场当我们遇到变化&#xff0c;尤其是发展上有瓶颈期的时候&#xff0c;我们会寻找向内突破&#xff0c;通过提升自己的核心竞争力来应对&#xff0c;通过再学习来增加自身的优势。那么在职读研有意义吗&#xff1f;我们来社科院与杜兰大学金融管理硕士项目来探寻。 一、读在…

Postman接口测试之Mock快速入门

一、Mock简介 1.Mock定义 Mock是一种比较特殊的测试技巧&#xff0c;可以在没有依赖项的情况下进行接口或单元测试。通常情况下&#xff0c;Mock与其他方法的区别是&#xff0c;用于模拟代码依赖对象&#xff0c;并允许设置对应的期望值。简单一点来讲&#xff0c;就是Mock创建…

【专业数据】八.2020~2022年北京交通大学【人工智能】专业复试线/分数线差/计划招生数/复试数/录取数/复试比例/录取率

文章目录 1.专业介绍2.2020-2022年国家线/复试线/分数线差2.1.数据总览2.2.数据指标2.2.1.复试分数线2.2.2.分数线差3.2020-2022年计划招生数/复试数/录取数/复试比例/录取率3.1.数据总览3.2.数据指标3.2.1.复试比例3.2.2.录取率4.参考资料欢迎订阅本专栏:《北交计算机复试经验…

python+appium(4)

conftest进阶使用 思路&#xff1a;我们平时导包多&#xff0c;而且经常使用某一段代码&#xff0c;一般我们使用封装的思想进行优化&#xff0c;pytest中conftest模块提供了更高效的方法 你可以添加任何想一次性封装的代码&#xff0c;这里吧代码变成变量&#xff0c;需要使…

Android APP 自动化测试搭建:Appium + Genymotion + [Robot Framework] Open Application

Android APP 自动化测试搭建&#xff1a; Appium Genymotion [Robot Framework] Open Application1. 安装 Android SDK2. 安装 ADB&#xff08;Android Debug Bridge&#xff09;3. 配置 platform-tools 目录(1) 复制 adb 等工具(2) 添加 apksigner.jar4. 配置 Appium Server…

C语言—函数

函数&#xff1a;将代码块封装成一个个不同的函数&#xff0c;在使用时可以多次的调用&#xff0c;不需要关心内部的实现&#xff1b; #include <stdio.h>void MyPrint() {printf("&&&&&&&&&&&\n");printf("…

BaseDet: 走过开发的弯路

BaseDet 开源啦&#xff01;该 repo 提供了一些经典的检测 SOTA 模型以及相关组件&#xff0c;欢迎大家按需取用~~GitHub&#xff1a;https://github.com/megvii-research/basedetMegStudio 使用示例&#xff1a;https://studio.brainpp.com/project/28826?nameBaseDet%E4%BD%…

重磅!TDengine 3.2.0 正式发布

近日&#xff0c;TDengine 3.0.2.0 正式发布了。这是自今年 8 月份 TDengine 3.0 发布以来的第一个重要改进版本。 TDengine 3.0 带来了几大核心特性&#xff0c;包括云原生架构、流式计算&#xff0c;还增强了数据订阅功能&#xff1b;更重要的是&#xff0c;3.0 系列版本开始…

Python是个什么鬼?为什么那么多人都要学它?真的有这么牛吗?

为什么那么多人选择学习python&#xff1f; Python在人工智能、大数据、自动化运维、全栈开发等方面具有独特的优势。随着Python继续占据编程语言主流的趋势&#xff0c;全国各城市的招聘岗位和薪酬将大幅增加。此外&#xff0c;随着人工智能在中国的投资和规划&#xff0c;对…

C++ Primer 第三章 Strings, Vectors, and Arrays

C Primer 第三章 Strings, Vectors, and Arrays3.1. Namespace using Declarations3.2. Library string Type3.2.1. Defining and Initializing stringsDirect and Copy Forms of Initialization3.2.2. Operations on stringsReading and Writing stringsUsing getline to Read…

【图像处理】opencv | 形态学运算:腐蚀,膨胀,开运算,闭运算| 二值图像处理

文章目录前言一、腐蚀和膨胀1.1腐蚀1.2膨胀二、开运算与闭运算三、礼帽与黑帽前言 参考视频&#xff1a;opencv教学 参考教材&#xff1a;《数字图像处理基础》 我的代码基本是跟着B站的视频里面敲了一遍&#xff0c;然后结合教材对指定区域做了一些加强学习 一、腐蚀和膨胀 …

华为云APIArts:API全生命周期一体化解决方案,帮助您端到端呵护您的API

摘要&#xff1a;华为云API Arts是API设计、API开发、API测试、API托管、API运维、API变现一体化协作平台&#xff0c;通过维护API各开发阶段数据高度一致&#xff0c;支持开发者高效实现API全流程一站式体验。 伴随数字化浪潮的到来&#xff0c;应用编程接口(API)已经成为一个…

【MySQL】2.MySQL库操作

文章目录1.0 MySQL基本使用1.1 理解数据库操作2.0 MySQL数据库操作详解2.1创建数据库2.2 字符集和校验规则2.2修改数据库2.3删除数据库2.4查看数据库链接1.0 MySQL基本使用 1.1 理解数据库操作 查看数据库配置文件 指令: vim /etc/my.cnf 登录数据库 指令&#xff1a; mysql…

[第十三届蓝桥杯/java/算法]A——排列字母

&#x1f9d1;‍&#x1f393;个人介绍&#xff1a;大二软件生&#xff0c;现学JAVA、Linux、MySQL、算法 &#x1f4bb;博客主页&#xff1a;渡过晚枫渡过晚枫 &#x1f453;系列专栏&#xff1a;[编程神域 C语言]&#xff0c;[java/初学者]&#xff0c;[蓝桥杯] &#x1f4d6…

机器人开发--设计范式

机器人开发--设计范式1 概念范式特点2 三种范式2.1 机器人基元&#xff1a;感知&#xff08;sense&#xff09;、规划&#xff08;plan&#xff09;、执行&#xff08;act&#xff09;2.2 范式分类分级范式 hierarchical paradigm反应范式 reactive paradigm混合范式 hybrid pa…

程序的动态链接(5):使用动态库

前言 Linux下动态库文件的命名规范是以lib开头&#xff0c;紧接着是动态库名&#xff0c;以.so为后缀名&#xff0c;即lib 动态库名.so。 动态库查找过程 在Linux下&#xff0c;动态库的搜索的优先级顺序为&#xff1a; 编译目标代码时指定的动态库搜索路径&#xff0c;保…

达梦数据库(DM8)常用SQL学习

达梦产品手册 1.检查数据库版本及服务状态 1.1 查看达梦数据库运行状态 SELECT status$ as 状态 FROM v$instance;1.2 查看达梦数据库版本 SELECT banner as 版本信息 FROM v$version;2.创建用户并授权 2.1 创建用户 -- 使用 CREATE USER 语句创建 DM 用户&#xff0c;登…

Python爬虫详解

从今天开始&#xff0c;给大家介绍Python爬虫相关知识&#xff0c;今天主要内容是爬虫的基础理论知识。 一、爬虫简介 爬虫是指通过编写程序&#xff0c;来模拟浏览器访问Web网页&#xff0c;然后通过一定的策略&#xff0c;爬取指定内容。因此&#xff0c;爬虫的编写通常分为…

Nature Communications:人类丘脑的基因结构及其与十种常见大脑疾病的重叠

丘脑是位于大脑中心的重要交流中枢&#xff0c;由不同的核组成&#xff0c;对意识和高级皮层功能至关重要。丘脑结构和功能的改变涉及到常见的大脑疾病的发病机制&#xff0c;但丘脑的遗传结构仍然很大程度上未知。在这里&#xff0c;使用来自30114个个体的大脑扫描和基因型数据…

【Linux】进程创建、进程终止、进程等待

目录 一、进程创建 1.1 深入 fork 函数 1.2 写时拷贝 二、进程终止 2.1 进程退出码 2.2 exit 与 _exit 三、进程等待 3.1 进程等待必要性 3.2 进程等待 3.2 wait 与 waitpid 3.3 获取子进程 status 3.4 非阻塞等待 一、进程创建 1.1 深入 fork 函数 在 Linux 中…