邮递员:如何存储响应中的数组并使用它发出多个请求

时间:2019-05-16 00:09:47

标签: postman postman-collection-runner

假设我有一个API端点/bar返回:

{
  "fooIds": [1,2,3]
}

和一个我想使用这些ID调用的/foo/<id>端点。

有没有办法让邮递员打给/bar端点并随后打给/foo

1 个答案:

答案 0 :(得分:2)

在Postman中创建一个具有两个请求的集合。第一个用于/bar,第二个用于/foo/{{id}},其中{{id}}是存储在全局变量或环境变量中的Postman参数(两个位置都可以,下面的示例使用全局变量)。

然后在第一个请求的测试脚本中使用以下方式将fooId保存到全局变量中:

pm.globals.set('fooIds', pm.response.json().fooIds.join(','));

在第二个请求的预请求中

// fetch the fooIds into an array (leaves it undefined if not found)
const fooIds = pm.globals.has('fooIds') && pm.globals.get('fooIds').split(',');

// if fooIds was found, and has a first element, save it
fooIds && fooIds[0] && pm.globals.set('id',fooIds.shift()); // .shift() removes the first element

// save the updated fooIds back to the globals
pm.globals.set('fooIds', fooIds.join(',')); 

注意:当fooIds = []时,fooIds.join(',')返回“”,并将全局变量设置为“”会将其删除。

最后是第二个请求的测试脚本

pm.globals.has('fooIds') && postman.setNextRequest('nameOfFooRequest') 

如果您在Postman Collection Runner中运行该程序,那应该(希望)遍历id的数组。

(运行前请务必保存,因为可能会有无限循环)

让我知道您是否有任何问题。