从 swagger 规范文件更新邮递员集合

raf*_*rsr 9 swagger postman

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

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

Replace 或者 Import as copy

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

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

提前致谢!

Mr3*_*381 9

Postman 目前不支持此功能。关联

我从这个博客中学到了替代方案。简而言之:

  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 --------->
}
Run Code Online (Sandbox Code Playgroud)


Mar*_*rey 1

没有直接的解决方案。在相当长的一段时间内也可能不会出现这样的情况 - 开发人员表示,很难将集合中的旧 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);
}
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)