...

Интеграция через веб-хуки: пара простых примеров

интеграция информационных систем, архитектура и интеграция веб-хуки, что такое веб-хуки и как они работают, вебхук пример, обучение системных и бизнес-аналитиков интеграции и архитектуре, Школа прикладного бизнес-анализа Учебный центр Коммерсант

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

Что такое веб-хуки и как они работают

Веб-хук (Webhook) – это еще один способ интеграции информационных систем по веб-API. Суть такого веб-перехватчика не новая – он представляет собой просто обратный HTTP-вызов из системы-источника к системе-приемнику. Это удобно для асинхронной интеграции в рамках событийного обмена данными, т.е. не по расписанию. Вместо синхронного взаимодействия в стиле запрос-ответ система-приемник НЕ обращается к системе-источнику за новыми данными, а источник сам вызывает приемник при их возникновении. Это сокращает нагрузку на сеть, позволяя избежать периодических и безрезультатных обращений приемника к источнику за новыми данными.

Когда в системе-источнике происходит новое событие, она уведомляет систему-приемник, обращаясь к ней через HTTP-запрос по URL-адресу приемника. На UML-диаграмме последовательности это выглядит так:

UML-диаграмма последовательности интеграции систем через веб-хуки
UML-диаграмма последовательности интеграции систем через веб-хуки

Скрипт PlantUML для этой диаграммы:

@startuml
title Интеграция через веб-хуки
participant "Система-источник" AS I
participant "Система-приемник" AS P
I->I: создать \nсобытие()
I -\P : отправить \nданные о \nсобытии()
P->P: обработать событие()
@enduml

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

Примеры интеграции через веб-хуки

Поскольку веб-хуки часто используются для генерации уведомлений, в качестве 1-го примера возьмем генерацию сообщений в ТГ-бот о том, что появился новый ответ в сервисе Yandex Forms. Для этого я создала форму и в настройке интеграций добавила действие отправки GET-запроса по адресу https://api.telegram.org/bot{TOKEN}/sendMessage?chat_id={chat_id}&text={txt}, где вместо переменных {TOKEN} и {chat_id} заданы токен и идентификатор моего заранее созданного телеграмм-бота, а также текст сообщения.

Настройка интеграции в Яндекс.Формс
Настройка интеграции в Яндекс.Формс

После заполнения формы текст о том, что появился новый ответ на форму, ушел в ТГ-бот. Информация об результатах отправки также доступна в логе выполненных интеграций Yandex Forms.

Результат интеграции Yandex.Forms с внешней системой через API-вызов
Результат интеграции Yandex.Forms с внешней системой через API-вызов

В качестве второго примера я решила создать веб-хук на события добавления/удаления/изменения товаров в интернет-магазине на своей базе PostgreSQL, интегрированной с веб-платформой Hasura. Этот веб-хук также будет посылать уведомления в телеграмм-бот.

Создание триггера на таблицу PostgreSQL и настройка веб-хука
Создание триггера на таблицу PostgreSQL и настройка веб-хука

После создания событийных триггеров на таблицу product и выполнения операций мутации, т.е. вставки, изменения и удаления записей, уведомления об этом приходят в ТГ-бот.

Результаты выполнения триггерных операций
Результаты выполнения триггерных операций

При этом система-приемник, будучи веб-сервером, выдает ответ на сообщение от системы-источника. Таким образом, веб-хуки хоть и считаются средством асинхронной интеграции, взаимодействие между отправителем и получателем сообщения все равно выполняется в стиле запрос-ответ. При этом можно установить количество попыток повторной отправки сообщения, если система-приемник будет временно недоступна. Это будет реализовано на основе статуса HTTP-ответа от системы-приемника. Поэтому такой способ хорошо подходит для эпизодической генерации и отправки уведомлений о событиях одной системы в другую. Отправляемые при этом данные не должны быть слишком большими. А если нужно передать какую-то чувствительную информацию, следует делать это в POST-запросе, установив параметры аутентификации, которые ожидает система-приемник.

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

Основы архитектуры и интеграции информационных систем

Код курса
OAIS
Ближайшая дата курса
5 ноября, 2024
Продолжительность
16 ак.часов
Стоимость обучения
36 000 руб.

Узнайте больше про архитектуру и интеграцию информационных систем на моих курсах в Школе прикладного бизнес-анализа в нашем лицензированном учебном центре обучения и повышения квалификации системных и бизнес-аналитиков в Москве:

 

Я даю свое согласие на обработку персональных данных и соглашаюсь с политикой конфиденциальности.