Рубрики
Без рубрики

Использование скрипта предварительного запроса в Postman

Ссылка (https://www.arbazsidddiqui.me/using-pre-Request-script-in-postman/) в оригинальную статью Введение Postman стал опцией по умолчанию для проведения запросов API. Хотя мы могли бы быть …

Автор оригинала: 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, чтобы подтвердить это.
Postman-chaining.png.

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

Как это работает?

Почтальон предоставляет нам среду выполнения JavaScript под названием Postman Sandbox. Эта песочница доступен для нас в сценариях предварительного запроса, и, следовательно, позволяет нам запустить JavaScript. Кроме PM.Globals и PM.Sendrequest Мы использовали в этой статье Postman Sandbox предоставляет нам тонну большего количества песочницы API Чтобы помочь нам реализовать сложную логику в сценарии.

Заключение

Мы узнали, как автоматизировать, используя динамические параметры либо, создавая их, либо выбирая их через другой вызов API. Это на самом деле пригодится, особенно с аутентифицированными звонками, где токены Authens очень короткие.

Как этот пост? Вы можете найти больше в Twitter: @Arbazsiddiqui_ Или посетить мой Сайт Или присоединиться к рассылка Спасибо за прочтение!