在导入时将 Swagger 参数名称转换为 Postman 变量

Posted

技术标签:

【中文标题】在导入时将 Swagger 参数名称转换为 Postman 变量【英文标题】:Transform Swagger parameter names to Postman variables on import 【发布时间】:2019-12-30 16:40:07 【问题描述】:

我有一组以通常方式定义参数的 Swagger 文件。例如:

parameters:
      - $ref: '#/parameters/authorization'
...  
parameters:  
  authorization:
    name: Authorization
    description: ''
    required: true
    type: string
    in: header

将这些文件导入 Postman 后,Postman 集合已正确创建,但我希望“Authorization”参数的 Postman 变量为“AUTH_TOKEN”而不是“Authorization”(例如)。

实际上,我想声明一个字段(最好是在 swagger 文件中?),上面写着“当导出到 Postman 时,使用值 AUTH_TOKEN 作为变量名,而不是“授权”的默认“名称”)。

看起来 x-postman-meta 在招摇中可能会有所帮助,但在此处的 GH 问题之外没有找到有关此属性的任何信息说它可能会有所帮助。

无论如何 - 我怎样才能做到这一点?

【问题讨论】:

【参考方案1】:

我找到了一种方法来做到这一点,尽管从 OpenAPI/Swagger 的角度来看它感觉不太好。我发现您可以使用变量名称添加“默认”属性,例如

    
      "in": "header",
      "name": "Authorization",
      "description": "The bearer token in the format: Bearer token",
      "required": true,
      "type": "string",
      "default": "Bearer token"
    

这感觉很糟糕,因为默认属性的实际用途是:

在参数架构中使用 default 关键字来指定默认值 一个可选参数。默认值是服务器使用的值,如果 客户端未在请求中提供参数值。值类型必须 与参数的数据类型相同。

所以如果你有一个整数类型,你想用一个变量来填充,这将不起作用。此外,从文档的角度来看,这是完全错误的,服务器要求客户端提供此参数,它也不能有默认值,这是矛盾的。会对更“感觉良好”的解决方案感兴趣。

参考: https://swagger.io/docs/specification/describing-parameters/

【讨论】:

以上是关于在导入时将 Swagger 参数名称转换为 Postman 变量的主要内容,如果未能解决你的问题,请参考以下文章

如何防止 Azure ML Studio 在导入数据集时将特征列转换为 DateTime

分享一小坑,以后碰到了可以快速规避(swagger 对 名称为 nodeName 的参数报错)

将 Swagger JSON 转换为 RAML/YAML

无法将 swagger JSON 或 YAML 导入 Postman

swagger api一键导入postman

在运行时将类型 id 的对象转换为未知类型