Postman 可以将文件作为路径中的变量吗?

Posted

技术标签:

【中文标题】Postman 可以将文件作为路径中的变量吗?【英文标题】:Can Postman take a file as a variable from a path? 【发布时间】:2020-11-17 03:15:15 【问题描述】:

我有一个邮递员集合,其中包含一组三个 API 调用,我想将它们链接在一起并使用 runner 函数提供一个数据文件。假设他们是:

/prepareUpload

/upload

/confirmUpload

并且下一步需要每个输出。我很乐意从响应中提取内容并将它们放入变量中,为下一次调用做好准备,但我似乎陷入困境的是/upload 需要file 类型的file 参数file,但邮递员似乎不允许我将其设置为变量:

我已尝试导出集合,手动编辑 json 以将其强制为变量并运行它,例如:

<snip>
    
       "key": "file",
       "contentType": "contentType",
       "type": "file",
       "src": ["fullpath"]
    
  ],
  "options": 
    "formdata": 

contentTypefullpath 来自我的数据文件,但它似乎从未真正进行上传。

有谁知道这是否可行?

【问题讨论】:

【参考方案1】:

问题:

在 postman 中,如果我们检查 UI,我们会注意到无法将文件路径定义为变量。

当我们需要从不同系统运行文件时,这看起来像是一个限制

解决方案:

解决方案是破解 collection.json 文件。打开 json 并编辑 formdata src 并将其替换为变量,比如 fire_path :fire_path

现在在 Postman:

在预先请求中,您可以在下面的代码中设置路径

pm.environment.set("file_path","C:/Users/guest/Desktop/1.png")

也可以直接保存为环境变量,或者在使用newman时使用--env-var通过cmd传递。

注意:

将外部工作目录的访问文件设置为真(从右上角设置)

【讨论】:

【参考方案2】:

无法使用 Postman 读取本地文件(在 github 上的跟踪器中至少有两个问题:798,7210)

一种解决方法是,设置一个提供文件的服务器,这样您就可以通过对该服务器的请求来获取数据。

【讨论】:

谢谢,不过我认为我的用例略有不同。我可以让邮递员使用跑步者 (blog.postman.com/…) 读取数据文件,但它正在让它附加一个文件掉落的地方【参考方案3】:

好的,所以找到了这个问题的答案,简短的版本是 - Postman 做不到,但 Newman 可以:

https://github.com/postmanlabs/newman#file-uploads

设置和运行它需要付出更多的努力,但它确实提供了一个自动化整个过程的解决方案。

【讨论】:

【参考方案4】:

对于 Postman(自版本 9.1.5 起),在 Mac 操作系统上,您可以通过使用变量名称(即 uploadMe)命名共享目录中的文件来欺骗 postman。然后你从文件选择器中选择这个文件(命名为变量),瞧。

在我的情况下,我上传的文件位于同一个共享目录中,不要忘记在你的邮递员设置中设置共享目录。

【讨论】:

以上是关于Postman 可以将文件作为路径中的变量吗?的主要内容,如果未能解决你的问题,请参考以下文章

postman 中的小技巧

Postman使用技巧-环境变量使用

Postman中的环境变量

无法将 GraphQL 自定义类型作为 Postman 变量

如何导出Postman中的配置(导出为文件)

更新linux中的包含路径