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

版权声明:本文为博主原创文章,未经博主允许不得用于任何商业用途,转载请注明出处。 https://blog.csdn.net/fyyyr/article/details/83819177

常规的开发流程通常为:后端提供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测试这两个核心功能,所以实际开发时用起来区别不大。

猜你喜欢

转载自blog.csdn.net/fyyyr/article/details/83819177