我正在使用Postman从Web服务中获取结果。
Web服务将结果分成50个块,下一个请求URL在前一个JSON返回中如下所示:
{
"type": "user.list",
"pages": {
"type": "pages",
"next": "https://api.webservice.io/users?per_page=50&page=2",
"page": 1,
"per_page": 50,
"total_pages": 2721
},
...
字符串
有没有一种方法可以自动请求下一页,直到我有所有的结果?
2条答案
按热度按时间z3yyvxxp1#
是的
您可以剖析回应中的
next
,并将postman.setNextRequest('<next url>')
旁的值设定为。例如,在测试部分添加以下代码
字符串
参考-Conditional Workflows in Postman
x8goxv8g2#
我知道这是一个老帖子,但我想分享一个答案给其他可能正在挣扎的Postman用户。这个答案还包括在响应中不提供“下一个URL”的API中循环的方法。
你可以做的第一件事是在你最初的API调用中使用一个变量作为页码。在你提供的JSON响应中,“下一个”URL如下所示:
字符串
如果你使用这个作为你的原始URL,那么你可以简单地用一个变量替换硬页码,像这样:
型
为了在您的第一个页面上成功运行此操作,请使用Pre-Request分页选项卡定义您的初始pageNumber:
型
注意事项:确保你为你的变量定义了正确的作用域。这里我使用了“pm.variables.set”,它是局部的。你也可以根据你的需要使用“collection”,“environment”或“global”变量。
接下来,在Tests选项卡中,您可以添加一行代码到下一个页面,然后再次调用API。您需要添加一个条件,以确保您不会永远迭代。
根据你的需要,一个很好的条件是页码。由于responseBody显示了“total_pages”,你可以将其与当前pageNumber进行比较。
型
你可以尝试的另一件事是增加“每页”计数,以增加每次API调用的结果数量。我已经能够将“每页”计数从50增加到1,000(一千)。这节省了大量的时间进行多次调用,但你必须测试和确认你可以成功检索的最高数字,为你提供你想要的数据:
型
您不需要重新定义{{perPageCount}}变量。您只需要定义一次。如果您知道最大有用页数,您可以简单地将其硬编码为:
型
您也可以使用Pre-Request Script设置变量:
型
把这一切放在一起
如果我正在构建一个Postman集合来多次循环这个API调用,我将这样构建它:
预请求脚本:
型
网址:
型
测试:
型
最后,为了使其工作,您必须运行Postman Collection Runner。您不能简单地单独调用API。您可以在Postman教程中找到有关how to use the Collection Runner的详细信息。