Як отримати дані з API за допомогою send_request
Дія send_request дає змогу отримувати дані із зовнішніх API та обробляти відповідь у сценарії. Це корисно для отримання курсу валют, погоди, інформації про замовлення з CRM та інших даних.
Секрети для сценаріїв: якщо адміністратор увімкнув збережені секрети, дані автентифікації вставляють у URL, заголовки або тіло запиту ноди Send Request через Вставити поле credential чи Вставити auth header. Див. керування секретами та секрет у Send Request.
- Дія
send_requestнадсилає HTTP-запит на вказаний URL - Отримує відповідь у форматі JSON
- Обробляє відповідь через
response_mappingабо зберігає у стані сценарію - Дані стають доступними в сценарії через плейсхолдери
Обробка JSON-об'єкту у відповідь
Приклад 1: Отримання назви завдання
Конфігурація:
{
"url": "https://jsonplaceholder.typicode.com/todos/1",
"method": "GET",
"response_mapping": {
"title": "task_title"
}
}
Пояснення:
response_mappingвказує, в який плейсхолдер записати параметр відповіді- Поле відповіді API
titleбуде доступне у сценарії як{{task_title}}.
Використання в сценарії:
Після виконання запиту використовуйте {{task_title}} у наступних нодах сценарію. JSONPlaceholder — публічний тестовий API; у робочому середовищі використовуйте власну контрольовану кінцеву точку API.
Обробка масиву об'єктів у відповідь
Приклад 2: Отримання курсу валют
Конфігурація:
{
"url": "https://api.privatbank.ua/p24api/pubinfo?json&exchange&coursid=5",
"method": "GET",
"response_mapping": {
"list_obj": {
"text": "{{ccy}}/{{base_ccy}}",
"value": "{{buy}}"
}
},
"save_mapped_list_obj": "currency_mapped_obj"
}
Пояснення конфігурації:
list_obj— вказує, що ми обробляємо масив об'єктівtext— текст, який буде відображатися (може містити плейсхолдери з відповіді API)value— значення, яке буде збережено при виборі (може містити плейсхолдери з відповіді API)save_mapped_list_obj— назва змінної, в яку буде збережено оброблений масив
Приклад відповіді API:
[
{
"ccy": "USD",
"base_ccy": "UAH",
"buy": "36.56860"
},
{
"ccy": "EUR",
"base_ccy": "UAH",
"buy": "40.20000"
}
]
Результат обробки:
Після обробки currency_mapped_obj буде містити:
[
{
"text": "USD/UAH",
"value": "36.56860"
},
{
"text": "EUR/UAH",
"value": "40.20000"
}
]
Використання в блоці "Список":
В блоці "Список" вкажіть змінну {{currency_mapped_obj}} як джерело даних. Блок буде отримувати дані про курс валют і виводити їх кнопками.
Використання результату вибору:
Після вибору користувачем валюти, ви можете використовувати результат в сценарії, наприклад вивести курс валюти.
Збереження необробленого результату запиту
Якщо до блоку send_request додати параметр конфігурації save_responce, результат виконання запиту буде записаний у змінну стану:
{
"url": "https://api.example.com/data",
"method": "GET",
"save_responce": "currency_arr"
}
Після виконання запиту вся JSON-відповідь буде доступна у змінній {{currency_arr}} для подальшої обробки через Action Jail або інші механізми.
Обробка помилок
Якщо API-запит завершився помилкою:
- Дія повертає
"not_ok" response_mappingне виконуєтьсяsave_responceне зберігається
В сценарії можна обробити подію "not_ok" для:
- Повторної спроби
- Відправки повідомлення користувачу
- Використання резервного джерела даних
Обмеження
response_mappingпрацює тільки з успішними відповідями (HTTP 200)- Максимальний розмір відповіді обмежений налаштуваннями системи
- Складні вкладені структури можуть потребувати додаткової обробки в Бібліотеці дій