Почтальон: Как сохранить массив из ответа и использовать его для выполнения нескольких запросов - PullRequest
0 голосов
/ 16 мая 2019

Допустим, у меня есть конечная точка API /bar, которая возвращает:

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

и конечную точку /foo/<id>, которую я хотел бы вызвать с этими идентификаторами.

Есть ли способ заставить почтальона совершить звонок на конечную точку /bar и последующие звонки на /foo?

1 Ответ

2 голосов
/ 16 мая 2019

Создайте себе коллекцию в Почтальоне с двумя запросами. Первый для /bar, второй для /foo/{{id}}, где {{id}} - это параметр Почтальона, хранящийся либо в глобальных переменных, либо в переменных окружения (любое место в порядке, в приведенном ниже примере используются глобальные переменные).

Затем в тестовом скрипте первого запроса сохраняем fooIds для глобалов с помощью

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, это должно (надеюсь) перебрать массив идентификаторов.

(не забудьте сохранить перед запуском, поскольку у вас может быть бесконечный цикл)

Дайте мне знать, если у вас есть какие-либо проблемы.

...