【问题标题】:Update postman collection from swagger specification file从招摇规范文件更新邮递员集合
【发布时间】:2018-01-07 06:59:01
【问题描述】:

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

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

ReplaceImport as copy

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

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

提前致谢!

【问题讨论】:

    标签: swagger postman


    【解决方案1】:

    没有直截了当的解决方案。 在相当长的一段时间内也可能不会有一个 - 开发人员 said 很难将集合中的旧 Postman 请求与从传入的 Swagger 文件(或任何其他更新源,就此而言)。

    不过,您可以在 Postman 之外执行此操作。 Postman 集合实际上只是 JSON 数据,可以这样操作。

    1. 将 Swagger 文件转换为 Postman 集合文件。 (您可以将其导入并再次导出,或者如果您想自动化,也可以使用 Swagger2Postman 之类的工具。将其保存为集合 2.0 或更高版本,该格式使第 3 步变得容易得多。)
    2. 以相同版本导出您的旧收藏
    3. 用您喜欢的脚本语言合并两个 JSON
    4. 将合并的 JSON 导入回 Postman

    我让自己成为第 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】:

      Postman 目前不支持此功能。 Link

      我从这个blog 学到了另一种选择。简而言之:

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

      Postman 更新集合 API 正文示例:

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

      【讨论】:

      【解决方案3】:

      为此我做了一个小工具:swagger2postman: convert swagger to postman collection and update exist collection

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

      【讨论】:

      • 没有测试但好主意!
      【解决方案4】:

      【讨论】:

      • 现在是活着的好时机(而不是与swagger-ui打交道)!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-28
      相关资源
      最近更新 更多