应用程序详细信息:
Win7/x64 的 postman
问题报告:
- 对于海量数据请求,我希望以外部 JSON 文件的形式输入,并且确实在每次迭代时重新放置整个正文。
- 预期行为:请求正文,当我从集合运行时应该能够替换为我的变量
- 截图:已附
重现步骤
集合运行器中我的 Json 文件作为输入数据:
[{ "rename": {"AssetId": 5496,"NewName": "API-CK9-2st"}, "addfolderto": {"FolderId": 5456,"FolderName": "API-CK1"} }]
在我的预请求脚本中:
var envRename = pm.iterationData.get("rename"); pm.environment.set("rename", envRename );
在 My Body 中,我尝试直接使用 env。变量来替换正文,例如:
{{rename}}
运行脚本后,我的请求正文被替换为:
Request Body:"[object Object]"
而不是我输入的 json 。
屏幕截图链接:
请帮助我解决这个问题,对于巨大的数据请求,我希望以外部 JSON 文件的形式输入,并且确实在每次迭代时重新放置整个主体。
最佳答案
您可以使用JSON.stringify()在 iterationData
变量上使用函数,然后在请求正文中使用 {{...}}
语法。
这是一个在本地使用不同 API 的示例,但使用相同的方法,它应该可以满足您的需要。
如果您不使用 JSON.stringify()
函数包装 iterationData
变量,您将看到 [object Object]
作为 POST 请求正文数据发送:
这是我的解决方案:
将 JSON.stringify()
函数添加到 Pre-Request Script
选项卡并包装 pm.interationData.get('my_object')
像这样:
然后将 {{new_object}}
语法变量添加到请求正文,该值现已被 JSON 字符串化:
在Collection Runner
中,选择您要使用的数据文件。我使用的 JSON 文件的 key
'my_object' 和 value
作为 JSON 对象而不是单个值 - 您可以在此处查看此文件的预览:
当从Collection Runner
运行集合或请求时,它会获取此对象值并在请求正文中使用它。由于我在 Pre-Request Script
中使用了 JSON.stringify()
函数,因此它不会像 [object Object]
一样出现> 我们在开始时看到的。
关于PostMan : For Huge data request, 我希望以外部 JSON 文件的形式输入,并且确实在每次迭代时重新放置整个主体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50100615/