最近项目中遇到一个case,想把所有的请求的input和output获取到,并生成文档。
经过思索和查阅资料,有这么几个方向:
Swagger
可以通过手动的编写yaml文件,来完美的描述各个API的输入输出,并且能够生成mock数据,进行测试。同时还能够获得关于API的文档。
详情见官网doc。
Postman
之前,只是把它当做一个API测试工具,没详细的了解过。最近看了下,简直不能太牛逼。
首先,安装postman的chrome app版本。
其中可以有几个可以用:
Chrome Interceptor
在postman的首页就能找到Interceptor的下载地址.
安装完成后,在想要跟踪的网页上,将插件的request capture
选项打开。然后同时打开postman,将其interceptor同步打开。
这样,在网页上call的request就都能够同步的显示在postman的history里了。
Document API
我们将需要的request添加到一个collection中。
搭配mock功能,可以构建自己的测试集。
搭配document API功能,可以直接形成关于API的文档。
搭配Runner功能,可以运行测试集(mock的输入数据),然后得到一个API的测试结果,包括输入和输出,以及一些request的相关参数信息。同时还有导出测试数据的功能。这个应该是最接近我们想要的了。
前面提到的那个interceptor唯一不好的一点就是不能够记录下来当前request的所有状态,包括req和res的所有数据(目前只有req的信息)。
Chrome netlog
后来发现了chrome强大的API功能,提供了可以获取Network的request的一些API接口。同时,还提供了一个类似于stack dump的功能,可以把Network的log信息导出到一个文件中。
利用chrome net-export(chrome://net-export/
),就能够将现存的Network Log存在本地。
同时,我们可以在启动chrome的时候添加一些参数,来设定chrome将其net-log保存在一个文件中:
--log-net-log=C:\some_path\some_file_name.json
不过,也有些不足:没有过滤,没有res的数据。
抓包
当然,可以用抓包工具,进行抓包。然后,自己解析导出文档即可。