Автор оригинала: 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_ Или посетить мой Сайт Или присоединиться к рассылка Спасибо за прочтение!