Analyze Webhook event on Azure

 

Використовуйте веб-хуки для безсерверної розробки, проаналізуйте частину 3 події Веб-хук на Azure

У цьому розділі підручника ми розширимо нашу функцію Azure, щоб вона не просто сказала “привіт” через тригер http, а надала конкретну інформацію про подію. Для цього служить веб-хук, який ми налаштували у другій частині як приклад для вікі GitHub (team work).

Компанія про тему

Наша функція Azure аналізує запит веб-хука та повертає відповідь.Наша функція Azure аналізує запит веб-хука та повертає відповідь.

(Зображення: Drilling / Azure)

Нагадуємо, наш веб-хук запускається, як тільки відбувається певна подія, а потім надсилає запит на цю URL-адресу за допомогою URL-адреси функції Azure. Перевезене корисне навантаження передається в функцію Azure.

Наразі наша функція Azure нічого не робить, оскільки це лише зразок коду node.js із Azure Function Apps для тригерів http. Тепер наша функція полягає в аналізі тексту запиту, тобто вилученні полів з корисного навантаження та, за необхідності, ініціюванні бажаних заходів. Однак у наступному прикладі ми друкуємо лише отриману інформацію.

Наприклад, наступний фрагмент коду з документації Microsoft витягує ім’я сховища GitHub із корисного навантаження. Тип події знаходиться у заголовку вимог до подій x-github. Ці дані самі виводяться з відповіддю функції:

if (req.body.repository.name){
context.res = {
body: "Repository is: " + req.body.repository.name + ", Event Type is: " +
req.headers['x- github-event']
};
}

Тепер ми хочемо адаптувати нашу існуючу функцію Azure, щоб проаналізувати корисне навантаження веб-хука. Для цього ми знову переходимо до нашого додатка функцій на порталі Azure, клацаємо на «Функції» та вибираємо функцію, створену в частині 1. Потім ми знову натискаємо на «програма та тест» та вибираємо наш «index.js» для оновлення файл із таким кодом:

module.exports = async function (context, req) {
context.log('JavaScript http trigger function processed a request.');
if (req.body.pages[0].title){
context.res = {
body: "Page is " + req.body.pages[0].title + ", Action is " +
req.body.pages[0].action + ", Event Type is " + req.headers['x-github-event']
};
}
else {
context.res = {
status: 400,
body: ("Invalid payload for Wiki event")
}
}
};

Цей код витягує тип події із заголовка запиту, заголовка та полів дій із тексту повідомлення. Це дозволяє нам визначити, чи було сторінку змінено, відредаговано чи створено заново. Код також генерує відповідь, яка узагальнює дію.

СЗ “Redeliver” веб-хук можна запустити знову.

(Зображення: Drilling / Azure)

Потім ми переходимо до нашого репозиторію GitHub, знову переходимо до “Налаштування”, там до “Вебхуків” і знову натискаємо на “Редагувати”. Там ми прокручуємо до “Недавні поставки”, клацніть під ідентифікатором доставки праворуч на трьох крапках, а потім на кнопку “Повторна доставка”.

У відповідь ви повинні отримати щось у такій формі:

Page is <Name der Site>, Action is <edited> (oder <created>), Event Type is gollum

Наша функція Azure тепер аналізує запит веб-хука і повертає цю відповідь.Наша функція Azure тепер аналізує запит веб-хука і повертає цю відповідь.

(Зображення: Drilling / Azure)

Тож ви бачите, що веб-хук ініціював нашу функцію. Потім аналізується інформація, що міститься в ній, і надіслана відповідь вище.

(ID: 47112845)

Ready to see us in action:

More To Explore

IWanta.tech
Logo
Enable registration in settings - general
Have any project in mind?

Contact us:

small_c_popup.png