使用Postman持续更新同步Collection

背景

当我们开发好接口之后一般会用一些接口调试工具来进行测试,比如Postman。这时候可以很方便的通过swagger.json文档快速的导入接口到Postman中并在简单的修改之后就可以方便的开始调试。

但是在项目的不断迭代中,出现一种情况使我们的测试管理工作非常的苦恼。Postman虽然可以支持从swagger.json导入,但是每一次的导入都会生成一个新的Collection,那么我们在之前Collection中做的一些配置不得不重新在新的Collection中配置一遍。非常的不优雅。

那么,是否存在一种方案可以优雅的感知到接口的新增和删除,从而再自动的在Postman中生成对应的接口的方法呢?细微的参数修改暂时不在考虑范围内,因为涉及到参数取值等环境变量的问题,未必自动的就可以处理好。答案是有这么一条路,虽然不是很直接。

准备

在我们操作之前,我们先需要知道一些概念,在Postman中导入swagger.json可以生成两部分内容:Collections和APIs。Collections主要对应的是接口实际请求的配置部分,而APIs主要作用是形成接口文档并进行版本管理。所以我们要借助APIs来实现我们的需求。

步骤

1. 导入swagger.json

swagger.json的类型一定得是OpenAPI 3,否则后面无法进行validate。

导入的时候选择生成Collection,其他配置根据自己情况来。操作成功后Collections和APIs下都会有对应的项目。



2. 添加一个接口,生成新的swagger.json

3. 更新APIs中的定义

打开APIs中的项目,打开Defination标签页。将新的swagger.json复制在右侧文本框中。保存。

4. 更新Collections

继续打开Documentation标签页,点击Validate against Defination或者Validate again。

点击Review issues查看详情,点击复选框选择,再点击确认将修改应用到Collections。完成新增接口到Collections

5. 操作结果

可以看到新增得Delete2已经出现在了Collections中。

补充

操作完成后,可以察觉到新增的接口没有按标签分组,Postman中又无法方便将请求移动到其他的文件夹。

解决方法是将该Collections导出,修改collection.json,重新组织请求的分组,然后重新导入。但是你又发现了这样导入导出很不优雅。

所以这里再推荐一个库[Github]matt-ball/postman-cli可以方便的将Postman的Collection转换为本地代码项目,然后将本地的修改再同步回Postman。

参考

  1. [Github]matt-ball/postman-cli
  2. Documentation | Developing with Postman utilities
  3. Documentation | Postman API
  4. postman-app-support | Add an option to Update Collection generated from the APIs tab
  5. Automatically sync OpenAPI/Swagger spec to collection