Если вы раньше работали с API, вы, вероятно, использовали Postman для отправки запросов и обеспечения того, чтобы ваша конечная точка работала должным образом. Но кроме нажатия кнопки «Отправить» вы можете делать гораздо больше — вы можете писать тесты, устанавливать среды и переменные и делиться своими API в рабочих областях.

А пока мы собираемся изучить скрипты и средства запуска коллекций, а также то, как они могут помочь нам улучшить определенный API.

Эхо

Postman предоставляет конечную точку эха — https://postman-echo.com/ — которая позволяет вам отправлять запросы и получать те же данные запроса в качестве ответа (он также может делать другие вещи, такие как возврат вашего IP-адреса и прочее, но мы не будем об этом сейчас).

Однако, в то время как API быстро возвращает нам эхо-ответ, эхо немедленно затухает, и мы остаемся в тишине. Но что, если бы мы могли сохранить это эхо навсегда, возможно, даже удвоить его?

Коллекция бегунов

Postman позволяет нам автоматизировать выполнение нескольких запросов одновременно. Мы можем указать прогон для любой коллекции — какие запросы нужно выполнять, их порядок, количество итераций, а также некоторые другие мелкие детали. И выполнить все одним щелчком мыши.

Хотя теоретически мы могли бы просто продолжать отправлять эхо-запросы, чтобы предотвратить тишину, сами отдельные эхо-сигналы довольно быстро затухли бы, что далеко не идеально.

Переменные и скрипты

Нам нужен способ «захватить» эхо ответа API и отправить его повторно. Мы можем использовать переменную коллекции для хранения эха между запросами. Начнем с создания переменной с именем echo на уровне коллекции. Это будет доступно на протяжении всей нашей коллекции, что позволит нам сохранить эхо.

Затем мы модифицируем тело запроса POST, чтобы отправить {{echo}} вместо исходного Hello. Почтальон заменяет переменную своим значением перед отправкой запроса.

Нам также необходимо захватить ответное эхо. Мы делаем это, написав тестовый скрипт для нашего запроса, который запускается после получения ответа (хотя мы пока ничего не тестируем).

В скрипте есть объект pm, который позволяет нам получать доступ к данным запроса и ответа, а также устанавливать переменные. А пока мы просто удвоим наше эхо:

const responseEcho = pm.response.json().data;
pm.collectionVariables.set('echo', responseEcho + responseEcho);

Мы также можем указать, что этот запрос должен быть запущен снова, используя объект postman. Это позволит нам управлять нашей коллекцией вечно.

postman.setNextRequest('Echo Post');

Слишком много эха

Проницательные среди нас быстро поняли бы, что удвоение эха каждый раз не продлится ни минуты, не говоря уже о вечности. Тело запроса быстро становится огромным, и API завершается с ошибкой 500. А ошибки, естественно, немедленно прекращают наш сбор.

Но нам не нужно отчаиваться — луч надежды исходит из самого неожиданного места.

Тесты

Иногда в наших тестовых сценариях мы действительно ожидаем, что запросы не будут выполняться. В этих случаях, даже если запрос завершается ошибкой, тест все равно проходит, поэтому сбор данных не останавливается. Мы можем использовать это в своих интересах, написав тест и вернув контроль над эхом, если оно станет слишком большим.

Динамические эхо

Ура! В то время как наше эхо продолжается вечно (хотя временами становится приглушенным), слышать одни и те же старые звуки снова и снова может быть немного мучительно. Если мы хотим привнести в свою жизнь больше красок, нам нужно будет сделать трудный выбор и избавиться от любых отголосков, которые становятся слишком сильными. Это позволит нам начать заново с совершенно другим звуком.

Мы можем использовать динамические переменные для генерации случайных цветов каждый раз, когда мы решаем начать заново. Нам просто нужно немного подправить часть обработки ошибок —

if(pm.response.code === 500) {
  const newEcho = pm.variables.replaceIn('{{$randomColor}}');
  pm.collectionVariables.set('echo', newEcho);
}

Если нам не нравятся цвета, мы можем генерировать случайные имена, числа или даже метки времени. И если мы чувствуем себя многословными, мы можем даже сгенерировать lorem ipsums. Весь список можно найти здесь.

Больше не одинок

В то время как наши отголоски в конце концов умирают, теперь у них есть шанс прожить дольше и вырасти до огромных размеров, а не сморщиться в виде крошечных существ (используйте postman.setNextRequest, чтобы отправить запрос на хвалебную речь). Возможно, это служит напоминанием о том, что ничто не длится вечно. Когда-нибудь последнее эхо умолкнет и не получит ответа, и мир погрузится в тишину. Но пока этот день не настал, у нас есть удобная коллекция, чтобы все было ярко и радостно.

PS: Используйте интерфейс командной строки newman для запуска коллекций прямо из командной строки. Или используйте его как библиотеку для запуска коллекций в вашем коде. Вам не нужно запускать Postman, чтобы эхо было сильным!