兼顾测试功能的API文档管理工具:Swagger与RAP2

2023-10-27

常规的开发流程通常为:后端提供API文档→前后端各自实现→联调测试。

这里经常遇到的两个问题:

  1. 文档如何维护。
  2. 一方实现后,需要等另一方进行联调。

对于文档的维护,常规的API文档管理工具都具备文档的创建、修改、共享、版本记录等,差别不大。

而对于联调的等待问题,会大大降低开发的效率。于是出现了Mock:前端可以使用Mock设置接口与返回数据,当进行请求时,拦截请求,并返回设置的数据。于是前端不与服务端进行联调即可测试同理,服务端可以使用Mock来模拟前端请求,直接自测。且无论前后端,Mock对代码的入侵性都非常小。

然而Mock最大的问题在于,前后端使用的API文档必须没有出入。若一方擅自变更了文档而没有通知另一方,那么就会导致双方使用的接口不一致。另外,若一方不小心看错了文档,也会导致开发的接口出现问题。

目前很多API文档管理工具除了提供对API的管理,还提供Mock功能。即将文档编写完成后,API文档管理工具还可以作为一个服务跑起来,前端可以直接请求该服务来访问定义的接口,感觉就像一个真正的后端;也可以将文档导出到Postman等,直接模拟前端请求来访问后端。

于是,前后端不再需要在项目中加入Mock代码,而是改为访问这个中间Mock服务。

 

目前API文档管理工具有很多。但有的功能有限,有的需要使用数据库,有的收费。比较好用且开源的,就是Swagger与RAP2了。

Swagger

Swagger官网:

https://swagger.io/

Swagger使用Swagger UI来显示文档。官方提供的GitHub源文件中有一个dist文件夹,就是Swagger UI。将其放到Tomcat下即可访问。

至于文档数据,全部保存在一个json文件中。将该文件放在dist目录下,然后修改dist/index.html中的SwaggerUIBundle.url指向该json文件即可。

url路径需要使用:ip:端口/文件夹名称/json文件名。

例如:

const ui = SwaggerUIBundle({
	  url: "http://192.168.1.98:8080/swagger/swagger.json",
        ...
})

也就是Tomcat部署后,从浏览器中访问该json文件所用的路径。

然后从浏览器中打开该index.html即可看到文档。

至于文档的编写,官方提供了Swagger Editor,功能很强大,可以导入导出,甚至根据API来生成代码。但使用的是yaml语法,要手动写文档,就必须使用官方规定的格式来手写yaml,虽然提供了边改边看功能,但依然非常不友好,很难用。那感觉就像在用记事本写java。

Swagger几乎没有第三方的编辑器,国内的sosoapi提供了一个在线的版本,可以在线以界面的形式对Swagger进行编辑,相比于Swagger Editor友好了很多。唯一烦琐的一点是接口响应的字段类型和Mock是分开的,因此需要先定义接口的每个字段是什么类型,然后再定义Mock返回值。虽然支持json导入,但依然是要操作两次的。另外编辑界面上并不会直接展示已经定义的Mock返回值是多少,需要点开Mock设置来看。

sosoapi的文档需要在线编辑和维护,也有离线版本,功能会受限制。

sosoapi支持将文档导出为各种格式,其中就包含Swagger所用的json格式。因此可以将导出的json放在Tomcat下让index.html来访问。但sosoapi本身对json进行了扩展,所以Swagger的index.html并不能完全正确地识别。推荐使用sosoapi在线的API管理功能。

sosoapi对前端提供可直接访问的Mock服务。也可以通过设置接口令牌(即服务端端口),来测试后端的接口。

RAP2

RAP2官网:

http://rap2.taobao.org/

RAP2也是在线使用的,支持离线部署。

RAP2功能与sosoapi基本相同,但其展示功能更好,编辑功能也强大,对于接口的响应字段只需要导入一次,即可直接生成字段名称,类型和Mock数据,更方便。

但RAP2导出功能相对较少,且不具备根据API来生成代码的功能。

RAP2同样对前端提供可直接访问的Mock服务。

对于后端的测试,RAP2可导出为Postman Collection,从Postman中导入后,设置基地址,即可直接访问后端接口。

 

Swagger推荐使用sosoapi。sosoapi与RAP2相比,sosoapi功能更丰富,但相对要了解的内容要多一些,同时展示和操作上有一些不太方便的地方。RAP2功能少一些,但操作方便,更加友好。然而二者都具备API文档管理与Mock测试这两个核心功能,所以实际开发时用起来区别不大。

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

兼顾测试功能的API文档管理工具:Swagger与RAP2 的相关文章

随机推荐

  • 手机云游戏App

    注 在安卓手机端使用 其他端不做分析 App 手机游戏 PC和主机游戏 免费时长 手机游戏 是否排队 备注 咪咕快游 支持 数量一般 和腾讯还有合作 有不少腾讯的游戏 支持 每日登录签到送30 60分钟 当天失效 0点更新 每套登录签到和任
  • PMIC

    Aurix TLF35584 多电压安全微处理器电源 提供电源给MCU 第二供电系统 车载自诊断系统供电 用于MCU CAN总线独立供电 输出复位信号给MCU 包含看门狗 由MCU喂狗 如不能则复位MCU 中断 与MCU相接 当电源有异常时
  • Oracle9i之xmltype应用

    Oracle9i之xmltype应用 1 2007年07月12日 星期四 14 52 这几天在研究9I下的XMLTYPE数据类型 这在解析和查找生成XML方面都很方便 在网上搜到了一篇入门级的文章 转贴下来 有几个地方小改了一下 文章摘要
  • java基本环境及常识

    1 编程语言 1 机器语言 0和1 在硬件上直接运行 计算机智能识别0和1 2 汇编语言 也称为符号语言 3 高级语言 面向过程的高级语言 程序设计的基本单位为函数 包括c c 面向对象的的高级语言 程序设计的基本单位为类 包括java c
  • Vue常见问题——Vue路由跳转、切换、返回页面不刷新问题

    前言 最近用iview admin做后台管理系统 遇到了个问题 列表页面点击进入详情页面编辑 编辑完成自动跳转到列表页 需要页面重新刷新请求列表 后管就是这么简单粗暴 然并卵 再次回到列表页页面不会重新刷新 问题很好解决 因为iview a
  • 梦三国解析服务器spl文件头失败,流沙恐遭降级?《梦三国2》MPL夏季赛第二轮激战全面开启...

    逐梦巅峰 为荣耀而战 2020 梦三国2 职业联赛 简称 MPL 夏季常规赛第一轮较量于上周正式结束 风月战队后来居上 通过6小局连胜将战队积分累积至14分 积分排名连跳3级成功登顶第四周积分榜首之位 常规赛半程结束 让我们快速回顾第四周的
  • 挂机宝怎么搭建php网站,如何使用挂机宝搭建网站?挂机宝建站教程

    教程简介 安逸资源网小编现在教你们怎么使用挂机宝搭建网站 这一教程适用于所有windows系统笔记本或挂机宝qq代挂网站怎么搭建 废话我就不多说了 看到你们这么热爱学习技术的份上就直接上教程吧 第一步 首先我们先打算一台挂机宝 没有的可以去
  • 【Web】go管理配置神器 viper库

    建议看官方文档 viper 库的作用 viper适用与go应用程序中处理多种格式的配置文件 如 YAML JSON TOML 等 它支持 设置默认值 从 JSON TOML YAML HCL envfile 和 Java 属性配置文件中读取
  • C++实现矩阵压缩存储与(快速)转置

    注意 以下所有代码均在VS2010环境下运行测试 了解了C语言以后 我们都知道 要存储一个矩阵 用一个二维数组即可实现 今天 由我来带领大家玩点新鲜的 对矩阵进行压缩存储并对其进行转置 一 对称矩阵及对称矩阵的压缩存储 1 什么是对称矩阵
  • 超详细、超完整的C++教程(算是吧)

    C 是一种高级编程语言 它被广泛应用于软件开发 游戏制作 嵌入式系统等领域 本文将为读者提供一份超详细 超完整的C 教程 帮助初学者掌握C 的基础知识 同时给出十个实例 并一一解释分析 最后 我们将为读者提供一道编程题 并给出解答 目录 第
  • Openwrt安装python问题

    1 tini依赖函数找不到 需要禁用docker compose 2 pip 19版本过低 需要将pip更新到21 3 pip install upgrade pip staging dir hostpkg bin python3 8 m
  • Ubuntu 安装 Visual Studio Code 搭建 C++ 开发环境教程

    Ubuntu 安装 Visual Studio Code 搭建 C 开发环境教程 一 Ubuntu 安装 Visual Studio Code 1 下载 1 在 Ubuntu Software 中下载安装 2 Visual Studio 官
  • 【推荐】10本黑客入门必看的书籍

    前言 书籍介绍黑客入门的基本知识和必备技能 帮助您理解黑客攻击的原理和方法 并提供有效的防御策略 1 白帽子讲Web安全 作者 吴翰清 介绍了常见的Web安全漏洞和攻击技术 并提供了相应的防御策略 2 Metasploit渗透测试指南 作者
  • shell脚本之检索某url中所有文件的内容

    前言 cve 官网或者工信部会发布一些 cve 漏洞 可以看到该漏洞在某次 commit 提交代码后修复的 可以通过检索 kernel org 中所有内核版本的 ChangeLog 文件中是否包含该 commit 来判断漏洞影响的内核版本
  • copyTo 使用方法

    原地址 https blog csdn net qq 36930777 article details 78256739 openCV中image copyTo 有两种形式 1 image copyTo imageROI 作用是把image
  • 2.4.5Qt之plainTextEdit 文本编辑器dial刻度盘spinBox整数计数器QDoubleSpinBox浮点计数器QSlider滑块基础知识

    Qt之plainTextEdit 文本编辑器dial刻度盘spinBox整数计数器QDoubleSpinBox浮点计数器QSlider滑块基础知识 文章目录 Qt之plainTextEdit 文本编辑器dial刻度盘spinBox整数计数器
  • 刷脸支付的广泛应用观望态势势会越来越少

    支付宝 微信支付 中国银联三大巨头都相继推出自己的刷脸支付产品 并对刷脸支付实行大力的推广扶持政策 刷脸支付较当下流行的扫码支付更加便捷 资金更安全 而且还有马云 马化腾多次站台宣传 想不火都难 支付宝宣布其刷脸支付已经具备商业化能力并逐渐
  • 解决ModuleNotFoundError: No module named ‘numpy.core._multiarray_umath‘的方法

    问题 导入tensorflow时报错ModuleNotFoundError No module named numpy core multiarray umath 异常信息如下所示 分析 NumPy是使用Python进行科学计算的基础软件包
  • GPU服务器租用阿里云和腾讯云对比以及学生GPU按量付费攻略

    学生如何选择GPU服务器 哪家GPU服务器 腾讯云GPU服务器和阿里云GPU对比 GPU服务器可以选择按量付费计费模式 用的时候创建一台按量GPU实例 不用的时候释放掉 这样比较划算 腾讯云百科来详细说下哪家GPU服务器划算以及按量付费GP
  • 兼顾测试功能的API文档管理工具:Swagger与RAP2

    常规的开发流程通常为 后端提供API文档 前后端各自实现 联调测试 这里经常遇到的两个问题 文档如何维护 一方实现后 需要等另一方进行联调 对于文档的维护 常规的API文档管理工具都具备文档的创建 修改 共享 版本记录等 差别不大 而对于联