从swagger规范文件

时间:2017-07-31 15:55:17

标签: swagger postman

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

  

集合APIName已存在。   你想做什么?

ReplaceImport as copy

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

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

提前感谢!

3 个答案:

答案 0 :(得分:1)

Postman目前不支持此功能。 Link

我从blog学到了另一种方法。简而言之:

  1. 更新您的OpenAPI YAML / JSON文件。
  2. 作为新收藏导入到邮递员。
  3. 从邮递员导出新收藏。作为Collection v2.1格式的JSON(推荐)。
  4. 使用Postman API(更新集合),使用步骤3中的JSON作为正文更新现有集合。 确保相应地collection_uid

邮递员更新集合API主体示例:

{
  "collection": 
  <------- YOUR EXPORTED COLLECTION HERE --------->
}

答案 1 :(得分:0)

没有简单明了的解决方案。很长一段时间也可能不会有一个 - 开发人员said很难将集合中的旧邮递员请求与新请求关联起来从传入的Swagger文件(或任何其他更新源)生成。

你可以在Postman之外做到这一点。 邮差收藏品实际上只是JSON数据,可以这样操作。

  1. 将Swagger文件转换为Postman集合文件。 (您可以导入它并再次导出,或者如果您想要自动化,可以使用Swagger2Postman之类的工具。将它保存为集合2.0或更新版本,这种格式使第3步更容易。)
  2. 以相同版本导出旧版收藏
  3. 使用首选脚本语言合并两个JSON
  4. 将合并后的JSON导回Postman
  5. 我为第3步做了一个简单的帮助。如果你只是在集合中添加更多的东西(我的情况),但是不能删除任何东西,这很好。 如果有人有更通用的解决方案,请发布 - 我很乐意使用它。

    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>

答案 2 :(得分:0)

我制作了一个小工具来执行此操作:swagger2postman: convert swagger to postman collection and update exist collection

该工具将合并新旧收藏,当发生冲突时,它将使用保存在邮递员手中。该工具可以检测查询参数中的更新,但不能检测正文。它将保留您所有的收集和测试用例。