2

应用详情:

Win7 / x64的邮递员

问题报告:

  1. 对于巨大的数据请求,我希望以外部 JSON 文件的形式输入,并且确实在每次迭代时重新放置整个主体。
  2. 预期行为:请求正文,当我从 Collections 运行时,应该能够用我的变量替换
  3. 截图:附上

重现步骤

  1. 我在 Collection runner 中的 Json 文件作为输入数据:

        [{
         "rename": {"AssetId": 5496,"NewName": "API-CK9-2st"},
         "addfolderto": {"FolderId": 5456,"FolderName": "API-CK1"}
        }]    
    
  2. 在我的预请求脚本中:

    var envRename = pm.iterationData.get("rename");
    pm.environment.set("rename", envRename );
    
  3. 在我的身体中,我试图直接使用环境。替换正文的变量,例如:

     {{rename}}
    
  4. 然后在运行脚本后,我的请求正文被替换为:

        Request Body:"[object Object]"
    

    而不是我的输入 json 。

截图链接:

带有我的评论的邮递员控制台日志

请帮我解决这个问题,对于巨大的数据请求,我希望以外部 JSON 文件的形式输入,并且确实在每次迭代时重新放置整个主体。

4

2 回答 2

1

您可以对变量使用JSON.stringify()函数iterationData,然后使用{{...}}请求正文中的语法。

这是一个在本地使用不同 API 但使用相同方法的示例,它应该可以满足您的需要。

如果您不iterationData使用函数包装变量JSON.stringify(),您将看到[object Object]作为 POST 请求正文数据发送:

在此处输入图像描述


这是我的解决方案:

JSON.stringify()函数添加到Pre-Request Script选项卡并像这样包装pm.interationData.get('my_object')它:

在此处输入图像描述

然后将{{new_object}}语法变量添加到请求正文中,这个值现在已经被 JSON 字符串化了:

在此处输入图像描述

在 中Collection Runner,选择您要使用的数据文件。我正在使用带有key“my_object”的 JSON 文件,并将其value作为 JSON 对象而不是单个值 - 您可以在此处查看此文件的预览:

在此处输入图像描述

当 Collection 或 Request 从 运行时Collection Runner,它获取这个对象值并在请求正文中使用它。由于我在 中使用了该JSON.stringify()功能Pre-Request Script,因此它不会像[object Object]我们在开始时看到的那样通过。

在此处输入图像描述

于 2018-04-30T13:14:12.980 回答
1

有必要更改变量名。因此,如果迭代数据包含rename变量,则应将其重命名为foo. 然后在邮递员调用的主体中,使用 {{foo}} 的迭代数据变量范围覆盖所有其他范围。

于 2018-08-26T09:02:08.540 回答