从招摇规范文件更新邮递员集合
Posted
技术标签:
【中文标题】从招摇规范文件更新邮递员集合【英文标题】:Update postman collection from swagger specification file 【发布时间】:2018-01-07 06:59:01 【问题描述】:我正在将一个 swagger 规范文件导入邮递员以创建一个集合,此时,按预期工作,并且该集合是使用所有请求和子文件夹生成的,很好!!。但是当 api 更新时,我需要更新邮递员以根据新规范更新所有请求。我找不到“更新”之类的操作或其他操作。我正在尝试将新规范导入邮递员,他说:
集合 APIName 已存在。 你想做什么?
Replace
或 Import 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打交道)!以上是关于从招摇规范文件更新邮递员集合的主要内容,如果未能解决你的问题,请参考以下文章