首页 文章

从swagger规范文件更新postman集合

提问于
浏览
1

我正在将一个swagger规范文件导入邮递员以创建一个集合,此时,按预期工作,并使用所有请求和子文件夹生成集合,很好!!但是当更新api时,我需要更新邮递员以根据新规范更新所有请求 . 我找不到像“更新”之类的动作 . 我正在尝试将新规范导入邮递员,他说:

集合APIName已存在 . 你想干什么?

ReplaceImport as copy

复制它是一个不可行的选项,然后我使用 replace 并更新现有的集合,但所有测试,参数,pre-req脚本都被删除,我需要再次重新配置 .

我缺少一些东西,有一种方法可以从规范文件中导入和更新现有的集合,而不会丢失现有的测试和配置吗?

提前致谢!

1 回答

  • 0

    There is no straightforward solution. 在相当长的一段时间内也可能不会有一个 - 开发人员很难将集合中的旧邮递员请求与传入的Swagger文件(或任何其他更新源)生成的新请求相关联 .

    不过,你可以在Postman之外做到这一点 . Postman collections are really just JSON data 并且可以这样操纵 .

    • 将Swagger文件转换为Postman集合文件 . (你可以导入它并再次导出它,或者如果你想自动化的话,可以使用像_2532813这样的工具 . 将它保存为集合2.0或更新版本,这种格式使第3步更容易 . )

    • 在同一版本中导出旧集合

    • 使用首选脚本语言合并两个JSON

    • 将合并的JSON导回Postman

    我为第3步做了一个简单的帮助 . 如果你只是在集合中添加更多的东西(我的情况),但是不能删除任何东西,这很好 . If anyone has a more versatile solution, please, post it - 我很乐意用它代替 .

    function execute() {
      collection = JSON.parse($(".collection").val());
      swagger = JSON.parse($(".swagger").val());
      result = JSON.stringify($.extend(true, {}, swagger, collection));
      $(".result").val(result);
    }
    
    <html><body>
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
      <br>Collection: <br> <textarea class="collection"></textarea>
      <br>Swagger: <br> <textarea class="swagger"></textarea>
      <br>Result: <br> <textarea class="result"></textarea>
      <br>
      <button onClick="execute()">EXECUTE</button>
    </body></html>
    

相关问题