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

Posted

技术标签:

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

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

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

ReplaceImport as copy

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

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

提前致谢!

【问题讨论】:

【参考方案1】:

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

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

    将 Swagger 文件转换为 Postman 集合文件。 (您可以将其导入并再次导出,或者如果您想自动化,也可以使用 Swagger2Postman 之类的工具。将其保存为集合 2.0 或更高版本,该格式使第 3 步变得容易得多。) 以相同版本导出您的旧收藏 用您喜欢的脚本语言合并两个 JSON 将合并的 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 学到了另一种选择。简而言之:

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

Postman 更新集合 API 正文示例:


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

【讨论】:

这对github.com/postmanlabs/openapi-to-postman没有帮助吗?【参考方案3】:

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

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

【讨论】:

没有测试但好主意!【参考方案4】:

好像他们已经实现了这个功能,

https://github.com/postmanlabs/postman-app-support/issues/6722#issuecomment-652929581

https://learning.postman.com/docs/designing-and-developing-your-api/validating-elements-against-schema/

您可以将新架构粘贴到 API 定义选项卡中并进行更新。

【讨论】:

现在是活着的好时机(而不是与swagger-ui打交道)!

以上是关于从招摇规范文件更新邮递员集合的主要内容,如果未能解决你的问题,请参考以下文章

如何从邮递员的集合中运行任何特定请求?

如何从 Spring 环境中自动生成邮递员集合

从邮递员集合创建 html 文档 [关闭]

出现 405 错误-在邮递员中工作时方法不允许招摇撞错

如何从 newman 的集合中运行单个请求

在邮递员中导出所有集合