使用POSTMAN或其他方式进行批量POST/PUT API请求

26

我有一个API请求列表,格式已经是URL。我只需要自动地一个接一个地POST它们并记录结果。

我唯一能想到的方法就是复制每个URL并使用Postman发送它们。但这真的很耗时间。我尝试过使用任务运行器,但似乎很难将变量设置为包含所有请求的数据文件。

https://someApi/clientAssign?auth=123|asdf&otherParamsList=123Params
https://someApi/clientAssign?auth=123|asdf&otherParamsList=456Params
https://someApi/clientAssign?auth=123|asdf&otherParamsList=899Params

我不确定如何使用Postman一个接一个地触发上述URL。我有大约60个POST请求和60个PUT请求。

有人可以建议一种方法来实现这一点吗?我可以通过复制URL并手动发布它们来完成。我只是没有时间经常这样做。而且,我已经花费了时间准备好了要替换的正确值的URL,并准备就绪。任何帮助都将不胜感激。

3个回答

52

不用担心,我找到了一种使用Postman的集合运行器来完成相同任务的方法。

对于那些像我一样遇到困难的人,以下是如何使用该功能,并且甚至更容易在执行过程中替换URL的值。

首先在Postman中创建一个请求:

下面是一个关于示例的截图:

enter image description here

现在的要求是发布以下网址: https://someApiPOSTRequest/clientAssign?auth=123|asdf&otherParamsList=123Params&someOtherParams={{VariableFromFile&additionalParams=hardcodedOnURL}} 其中,{{VariableFromFile}} 的值应从您需要上传的 CSV 文件中进行替换。您的 CSV 应按以下格式进行格式化,其中标题应使用您在 URL 上使用的相同变量名:

enter image description here

点击下面示例文件夹旁边的“>”按钮,然后点击“运行”,以在Collection runner窗口中打开相同内容:

enter image description here

一旦集合运行窗口打开,点击“选择文件”选项上传您的csv文件,而“迭代”字段默认预填有csv文件中的记录数量。您可以更改此数字,并确保您要运行的迭代次数与您上传的csv文件中的行数直接相关。

enter image description here

你也可以预览你上传的csv文件:

enter image description here

如果您点击“运行示例”按钮,集合运行器将使用来自csv文件的值替换{{VariableFromFile}},并在每次迭代中9次发布URL。
您可以通过添加一个具有相关变量名称的列并在api调用上使用相同的变量名来替换更多变量。就是这么简单。它确实减少了我很多手动工作!
您还可以参考下面的链接,该链接指导我在Postman中使用此功能。 Link 希望这对某人有所帮助。

2
非常有帮助!更新:在当前的Postman中,您可以从“文件-新建Runner选项卡”访问Runner。 - Stephen
感谢您回来与我们分享您的成功和正确的程序! - jrypkahauer
问题现在是提取结果(我需要响应正文)。这一点一点都不容易!如果像我一样有500个请求,使用控制台,您不想点击(每个请求2次)以显示响应正文。但这是另一个问题。 - Rudy Vissers

2

许多开发人员将使用chethandb的答案,但问题(如果像我一样)不仅是批量执行请求,还要在某个地方保存响应。

  • 初始请求

enter image description here

RECIPIENTACCOUNT是在CSV中使用的变量/参数,并传递到每个请求中。

  • 更新初始请求

将以下代码添加到“测试”选项卡中:

let responses = pm.collectionVariables.get('collectionResponses')
if(responses) {
  responses = JSON.parse(responses);
} else {
  responses = []
}

responses.push(pm.response.json());
pm.collectionVariables.set('collectionResponses', JSON.stringify(responses));

enter image description here

创建一个包含参数(在我的情况下为客户的 IBAN)的 CSV 文件。

/home/rudy/Desktop/recipientaccount.csv

我不会透露我们客户的收件人账户。

enter image description here

需要注意的是,RECIPIENTACCOUNT被用作请求的参数。
然后你就可以开始了。

  • 执行请求

enter image description here

点击右侧的箭头(因为它会消失,所以不会显示)。

enter image description here

点击运行。一个新窗口被打开。

enter image description here

点击“选择文件”以进行文件选择并选择(例如)recipientaccount.csv。
点击“保存响应”。
更改“迭代次数”(如果需要)。
如果您想要,可以进行“预览”。
单击蓝色按钮(在我的示例中运行客户可达性)。
请求将按顺序执行。

我将请求数量限制为3个(显示的图片为“1”,抱歉) enter image description here 所有3个请求都已正确执行。

  • 现在是获取结果的时候了。

关闭“集合运行器”窗口。
返回到“客户可达性”

在此输入图像描述
点击右侧的三个点,然后点击“编辑” 在此输入图像描述

点击变量并进行选择,从“CURRENT VALUE”中复制结果:

[{"data":{"id":"NOT DISCLOSED","type":"zoomitCustomerSearch","attributes":{"customerReference":"0193:IBN_BE_NOT DISCLOSED","status":"not-reachable"}}},{"data":{"id":"NOT DISCLOSED","type":"zoomitCustomerSearch","attributes":{"customerReference":"0193:IBN_BE_NOT DISCLOSED","status":"not-reachable"}}},{"data":{"id":"NOT DISCLOSED","type":"zoomitCustomerSearch","attributes":{"customerReference":"0193:IBN_BE_NOT DISCLOSED","status":"not-reachable"}}}]

结果在一行上。您需要使用sed/awk/...将结果格式化为所需格式。


1
我发现将原始数据添加为JSON格式可以解决问题。从Body > raw添加。
[
  {
    "text": "Buy Milk",
    "completed": true
  },
  {
    "text": "Check updated of wall street",
    "completed": false
  },
  {
    "text": "Play game with team",
    "completed": true
  }
]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接