当我将 Swagger API 导入 Postman 时,所有请求名称在 Postman GUI 中最终都是空白的

Posted

技术标签:

【中文标题】当我将 Swagger API 导入 Postman 时,所有请求名称在 Postman GUI 中最终都是空白的【英文标题】:When I import Swagger API to Postman, all request names end up blank in Postman GUI 【发布时间】:2019-04-08 02:27:03 【问题描述】:

我是 QA 工程师。开发团队使用 Swagger 为我们产品的 RESTful API 生成文档。我需要将其导入 Postman 以方便调用产品的 API。

将 JSON 文件(Swagger 格式)导入 Postman 后,有 1 个但很大的问题:单个请求的所有标题(和描述)都是空白的! (见下面的屏幕截图)。

显然,这是一个已知问题,记录在这里:https://github.com/postmanlabs/postman-app-support/issues/1434

我们确实有数百个请求。我需要找到一种足够有效且简单的方法来确保 Postman 中的所有请求标题都填充了我想即时计算的值。

我一直在考虑以下方法:

编写命令行工具(使用 NodeJS 或其他 坚实的平台),它将获得: 1.要修复的集合的ID 2. api键

它将遍历所有请求 收藏。对于每个请求:如果名称字段是 空白,然后是请求 URL 的子字符串 将分配到名称字段;如果名字是 不为空,请求被单独保留。

我不确定的:

    我可以通过 Postman 以编程方式执行此操作吗?将此代码放入任何一个单独的请求(作为 pre 或 post)是没有意义的。

(如果我必须在 Postman 之外编写此实用程序)

    对于 NodeJS,有“postman-collection”和 “postman-sdk”,但我有点困惑,我 应该使用。

    很遗憾,我还没有找到任何合适的 > 使用 C# 或 Java 维护 Postman 集合的库。

坦率地说,我对可用的选项感到很困惑。任何指导将不胜感激。

【问题讨论】:

【参考方案1】:

我遇到了同样的问题,感谢 Ian T Price 解决方案(只需将 operationId 值复制到新键 summary 中)。我决定为此编写一个小的 javascript 实用程序:

function swagPostman(swaggerJson) 
  for (let path in swaggerJson.paths) 
    let methods = ["get", "head", "post", "put", "delete", "connect", "options", "trace", "patch"];

    methods.map(method => 
      if ((swaggerJson.paths[path] || )[method]) 
        swaggerJson.paths[path][method].summary =
          swaggerJson.paths[path][method].operationId;
      
    );
  

  return JSON.stringify(swaggerJson);

还制作了一个简单的笔,在其中运行带有 GUI 的脚本:https://codepen.io/0x616c65/full/pMaQpb。您只需将 swagger.json 文件复制粘贴到该笔中即可!

【讨论】:

【参考方案2】:

对此的简单回答是添加一行summary: <RequestName>

我使用出色的APIs-Gurus OpenAPIDirectory repo 遇到了这个问题

这些 swagger.yaml 文件有一个可以复制的 operationId: 行,并使用 summary: 替换密钥:

awk 'if (!/      operationId:/) print ; next ;  print; a=gensub(/      operationId:/, "      summary:",1) ; print a' swagger.yaml  > swagger-new.yaml

将此导入 Postman,然后显示正确的请求名称。

PostMan 将导入/导出功能分离到单独的插件中,但他们的插件模型在当前时间留下了 很多 不足之处。

【讨论】:

以上是关于当我将 Swagger API 导入 Postman 时,所有请求名称在 Postman GUI 中最终都是空白的的主要内容,如果未能解决你的问题,请参考以下文章

swagger api一键导入postman

设置 AWS ApiGateway 端点所需的 API 密钥(Swagger 导入)

强的离谱,这款国产API管理神器杀疯了!

swagger api 怎么导入到postman

是否可以从 Swagger 和/或 RAML 导入和/或导出 API 蓝图?

Swagger UI 2.1 卡住“获取资源列表”