Автор оригинала: Arbaz Siddiqui.
Ссылка на сайт к оригинальной статье.
Вступление
Postman стал опцией по умолчанию, чтобы сделать и тестировать запросы API. Хотя мы можем быть знакомы с созданием основных HTTP-запросов с почтальоном, он дает нам гораздо большую мощность с точки зрения программирования вещей вокруг запроса API. В сценариях реального мира есть три способа, которые мы обращаемся к пользователям и обрабатываем их дальше.
Во-первых, когда параметры являются просто пользовательскими входами, и вы можете использовать для дальнейшей обработки, такую как извлечение из БД.
Второй корпус использования – это когда сами параметры вычисляются на клиентах, а затем отправлены на серверы. Это могут быть вещами, такие как генерация подписи, содержащей временные метки, поэтому они будут отличаться каждый раз.
В-третьих, когда ваши клиенты запрашивают цепочки для цепочек I.e. Они делают API-вызов и используют реакцию этого вызова API как параметров следующего вызова API.
Хотя первое место для использования довольно прост, чтобы проверить по почтелему, второе и третьим случаям сложно. За секунду, вам придется запустить скрипт, чтобы создать эти параметры в реальном времени, а затем вручную ввести их в Postman. На третьем вы сделаете первый вызов API, копировать ответ и использовать их в качестве параметров в следующем вызове API. Если вы ленивы, как я, это кажется слишком много проблем, особенно когда вашими словами имеют истечение срока действия, и у вас есть ограниченное время времени, чтобы сделать эту операцию вручную.
Введите предварительные запросы скрипты. Postman позволяет вам написать скрипт предварительного запроса, который будет работать до фактического вызова API и выполнять все вещи, которые делали вручную. Давайте посмотрим на обоих случаях с подробным примером.
Генерация параметров в реальном времени
Есть API, которые требуют, чтобы у вас был параметр (или заголовок), который генерируется в режиме реального времени, то есть его значение будет изменяться с каждым запросом API. Давайте посмотрим на примере:
Мы должны сделать сообщение Post API to http://www.mocky.io/v2/5e75d1d72f00006900985f1e
Что будет преуспеть только в том случае, если запрос содержит заголовок Хматикен
Отказ Это Хматикен
Сгенерируется с помощью подписания строки, содержащей ваш токен и временные метки с секретом. Если бы мы делаем это без предварительного запроса скрипта, нам придется запустить этот алгоритм, используйте вывод как заголовок и сделать вызов. Мы можем автоматизировать это так:
- Составьте базовый запрос с
http://www.mocky.io/v2/5e75d1d72f00006900985f1e
как URL и метод какПост
Отказ - Добавьте заголовок с
Хматикен
как ключ и{{auth}}
в качестве значения. Этоauth
является динамическим значением и будет сгенерировано с использованием сценария предварительного запроса.
- Сценарии предварительного запроса позволяют писать JavaScript и, следовательно, мы можем написать код JS для реализации функции пения. В
Сценарий предварительного запроса
Добавьте следующий фрагмент кода:
const crypto = require('crypto-js'); const token = "myLongLivedToken" const secret = "iKillFascists" const signToken = () => { const dateTime = (new Date).getTime().toString() const stringToSign = `${token}-${dateTime}`; const hash = crypto.HmacSHA256(stringToSign, secret) return crypto.enc.Base64.stringify(hash); } const signedToken = signToken() console.log(`successfully generated token : ${signedToken}`) pm.globals.set("auth", signedToken);
Это простой скрипт для генерации хеш HMACSHA256 с использованием Crypto-JS, который встроена в Sandbox Postman. Обратите внимание, как строка, которую мы подписываем с секретом, содержит Timestamm, и, следовательно, всегда будут разными. Единственный кусок, который специфичен для почтальона, является
PM.GLOBALS.SET («AUTH», FUNDEDTOKEN);
Отказ Здесь мы назначаемВход в систему
Переменнуюauth
Отказ Этот авторизм теперь может использоваться в постах, заголовках, теле или даже даже URL.Теперь мы можем идти вперед и сделать вызов API. Теперь следует использовать подписанный токен в
Хматикен
заголовок Чтобы проверить это, мы будем использовать другую очень удобную вещь, которую сообщает Postman, Postman Console. Эта консоль покажет нам все журналы консоли в нашем скрипте, а также детали ответа на запрос. ИспользоватьCMD + ALT + C
(Ctrl + Alt + C
на Windows) Чтобы открыть консоль иОтправить
запрос API.
Как показывает консоль Postman, мы смогли создать подпись, используя скрипт предварительного запроса и использовать это в наших заголовках. Мы можем продлить эту идею и использовать сценарии для генерации значения и назначить их переменным, а затем использовать эти переменные в почтовосте.
Запросы на цепочку
Иногда для выполнения операции нам нужно цепи несколько запросов API, то есть ответа от первого вызова API используется в качестве запросов параметров для второго вызова API. Вместо того, чтобы сделать два вызова API и копирование данных над данными, мы можем использовать скрипт предварительного запроса на то же самое. Давайте посмотрим на пример
Мы должны сделать сообщение Post API to http://www.mocky.io/v2/5e75d1d72f00006900985f1e
что будет преуспеть, если у нас есть запрос имеет заголовок app-token
Отказ Мы получаем это app-token
делая еще один звонок в http://www.mocky.io/v2/5e75f1ac2f00006b00985f62
Отказ Мы можем автоматизировать весь поток, как это:
- Составьте базовый запрос с
http://www.mocky.io/v2/5e75d1d72f00006900985f1e
как URL и метод какПост
Отказ - Добавьте заголовок с
app-token
как ключ и{{токен}}
в качестве значения. Этотокен
это динамическое значение и будет получено с использованием скрипта Pre запроса. - В
Сценарий предварительного запроса
Добавьте следующий фрагмент кода:
const reqObject = { url: 'http://www.mocky.io/v2/5e75f1ac2f00006b00985f62', method: 'GET', header: 'Content-Type:application/json' }; pm.sendRequest(reqObject, (err, res) => { const {token} = res.json() console.log(`fetched token ${token}`) pm.globals.set("token", token); });
- Мы используем
PM.Sendrequest
Чтобы сделать запрос API, а затем назначить ответ на переменнуютокен
который является динамическим значением заголовка. - Теперь мы можем идти вперед и сделать вызов API. Теперь следует использовать избытый токен в
app-token
заголовок Мы снова будем использовать консоль Postman, чтобы подтвердить это.
Мы успешно смогли цепотать запрос и сэкономить вручную ручную работу при создании дополнительного вызова API. Это одноразовое усилие написать сценарий, но спасет вас тонны боли и времени.
Как это работает?
Почтальон предоставляет нам среду выполнения JavaScript под названием Postman Sandbox. Эта песочница доступен для нас в сценариях предварительного запроса, и, следовательно, позволяет нам запустить JavaScript. Кроме PM.Globals
и PM.Sendrequest
Мы использовали в этой статье Postman Sandbox предоставляет нам тонну большего количества песочницы API Чтобы помочь нам реализовать сложную логику в сценарии.
Заключение
Мы узнали, как автоматизировать, используя динамические параметры либо, создавая их, либо выбирая их через другой вызов API. Это на самом деле пригодится, особенно с аутентифицированными звонками, где токены Authens очень короткие.
Как этот пост? Вы можете найти больше в Twitter: @Arbazsiddiqui_ Или посетить мой Сайт Или присоединиться к рассылка Спасибо за прочтение!