Использование скриптов при формировании запросов используя Postman

25.10.20

Интеграция - WEB-интеграция

В статье опишу применение JS скриптов а postman при работе с API.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Бесплатно
MangoOffice.postman_collection.json
.json 24,47Kb
19
19 Скачать бесплатно
Google User Auth Example.postman_collection.json
.json 16,10Kb
10
10 Скачать бесплатно
Google Drive.postman_collection.json
.json 6,15Kb
8
8 Скачать бесплатно
Zoom API JWT.postman_collection.json
.json 5,70Kb
5
5 Скачать бесплатно

Вводные

Нужно протестировать работоспособность API в которых:

  • Используется подпись в теле запроса, пример Mango office API (документация)
  • Используется Oauth аутентификация с RS256, пример Google API используя сервисного пользователя  (документация)
  • Используется Oauth аутентификация, пример Google API используя доступ обычного пользователя (документация)
  • Используется JWT токен HS256, пример Zoom (документация)
  • Тестирую с помощью Postman

 

Описание варианта с подписью

Выдержка из документации: "Данные, которыми обмениваются системы, как правило, будут передаваться в теле POST-запроса. В этом случае в тело запроса включается обязательные параметры json, vpbx_api_key и sign.
Параметр vpbx_api_key заполняется уникальным кодом продукта ВАТС, полученным в Личном кабинете MANGO OFFICE при подключении API. 
Значение sign рассчитывается следующим образом: sign = sha256(vpbx_api_key + json + vpbx_api_salt). 
Подписываются все запросы — как от внешней системы, так и от API ВАТС."

 

Решение варианта с подписью

Можно собрать тело запроса вручную, рассчитав хэш SHA256 используя онлайн сервис или написав обработку в 1С, но для тестирования набора запросов с разными данными это неудобно.

В postman поддерживаются переменные (документация) и обработчики перед и после отправки запроса (документация).

Обработчики пишутся на JS, ими можно установить переменную, нельзя переписать тело запроса. Поэтому для решения задачи помещаем переменную {{content_body}} в тело запроса

 
 скриншот

и реализуем её расчет для Pre-request script

 
 код формирования подписи

 

Расчет подписи используется для всей коллекции при этом данные определяются на уровне запроса. Для решения задачи код нужно установить в коллекцию. Код коллекции выполняется раньше кода запроса, поэтому код коллекции нужно обернуть для возможности вызова из кода коллекции.

 
 код коллекции

 

 
 код запроса

 

Описание варианта с Oauth аутентификацией используя сервисного пользователя

Для работы с сервисом нужен токен доступа, для получения которого нужно отправить JWT запрос, у Google применяется формат JWT RS 256, в котором используется RSA.

 

Решение варианта с Oauth аутентификацией используя сервисного пользователя

Реализовать получение токена в обработчике перед запросом. Кешировать токен в переменных окружения с фиксацией срока действия.

Решение нашел по адресу https://gist.github.com/dinvlad/425a072c8d23c1895e9d345b67909af0

 
 код коллекции

 

Для корректной работы в переменную "serviceAccountKey" нужно записать содержимое JSON ключа созданного для сервисного пользователя.

В скрипте скачивается внешний JS скрипт и кешируется в переменной "jsrsasign".

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

При наличии нескольких коллекций под разные сервисы переменные окружения (pm.environment) можно перевести в переменные коллекции (pm.collectionVariables).

 

Описание варианта с Oauth аутентификацией с ручным получением ключа

Формируем GET запрос, переносим в браузер, на уровне браузера подтверждаем права доступа, получаем код.

Используем код для получения access и refresh токенов

 

Решение варианта с Oauth аутентификацией с ручным получением ключа

Формируем GET запрос с параметрами, запускаем, берем из консоли строку запроса. берем первую, потому что остальные это автообработка редиректов postman-ом .

 
 скриншот

 

Полученный код добавляем в переменные коллекции и выполняем запрос на получение ключа, в вкладке tests добавляем скрипт обработки полученных данных

 
 скрипт

 

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

 

Описание варианта с JWT HS256 токеном

При каждом запросе формируется JWT токен с ключом и датой окончания действия, который помещается в заголовок запроса

 

Решение варианта с JWT HS256 токеном

 
 скрипт

 

Итог

Postman удобный инструмент для тестирования API, работа с ним при использовании скриптов становится более производительной.

 

Благодарю за внимание.

Postman

См. также

Оптовая торговля Розничная торговля WEB-интеграция 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

Онлайн-заказ - это решение для автоматизации процесса оформления заказов на сайте в торговых организациях. Продукт обеспечивает легкое взаимодействие между компанией и клиентами через веб-интерфейс, интегрированный с 1С:Предприятие. Система позволяет снизить операционные расходы, повысить лояльность клиентов и оптимизировать работу отдела продаж.

57600 руб.

26.11.2024    1235    1    1    

4

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    18355    20    22    

18

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Интеграция 1С и Битрикс 24. Разработка имеет двухстороннюю синхронизацию 1С и Bitrix24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (платформа начиная с 8.3.23): 1С:Управление торговлей, 1С:Управление Нашей фирмой 3, 1С:Комплексная автоматизация 2, Объединенное решение: Модуль 1С:CRM 3 (3.0.21.3) +1С:ERP Управление предприятием 2. При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

7200 руб.

04.05.2021    20564    13    19    

18

WEB-интеграция Программист Бизнес-аналитик Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

14400 руб.

20.12.2024    320    2    0    

5

WEB-интеграция Программист Руководитель проекта Платформа 1С v8.3 Конфигурации 1cv8 1С:Франчайзи, автоматизация бизнеса Платные (руб)

Расширение значительно упрощает написание API на 1С. Веб программисты получают простой и понятный доступ к 1С. Описание API создаётся автоматически и представляется в виде удобном как для человека, так и для программной обработки.

24000 руб.

27.09.2024    2483    1    0    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. VKuser545293550 11.09.20 21:55 Сейчас в теме
Здравствуйте!
А можно, пожалуйста, получить коллекцию для импорта в postman?
2. malikov_pro 1326 11.09.20 23:48 Сейчас в теме
(1) От какого сервиса? В статье samson и google.
3. VKuser545293550 12.09.20 11:57 Сейчас в теме
4. malikov_pro 1326 12.09.20 13:41 Сейчас в теме
5. morozov256 25.09.20 23:56 Сейчас в теме
Хорошая статья.
Но как Вы импортировали библиотеку в Postman?

Я имею в виду CryptoJS.
8. malikov_pro 1326 26.09.20 06:51 Сейчас в теме
6. morozov256 26.09.20 00:00 Сейчас в теме
Хорошая статья.
Но как Вы импортировали библиотеку в Postman?

Я имею в виду CryptoJS.
7. malikov_pro 1326 26.09.20 06:49 Сейчас в теме
(6)

const JS_RSA_SIGN_SRC = 'https://kjur.github.io/jsrsasign/jsrsasign-latest-all-min.js';



Которая используется в

const getJWS = callback => {
Оставьте свое сообщение