Миллиарды веб-приложений постоянно обмениваются данными — от информации об оплате вафельницы в интернет-магазине до подтверждения бронирования автобусного билета. Для таких уведомлений платформы используют вебхуки (Webhook).
Что такое Webhook?
Webhook — это автоматически сгенерированный HTTP-запрос, созданный в ответ на какое-либо событие (триггер). Он подобен SMS-уведомлению: быстрый, односторонний и носит уведомительный характер.
Разработчик создаёт скрипт (endpoint, или «оконечная точка») — программный код, на который сервер отправляет запросы по протоколу HTTP. Это и есть вебхук. Название «веб-крюк» наглядно отражает суть: «цепляемся крюком» за веб и передаём данные. Запросы обычно отправляются, когда сервер фиксирует триггер (оплата, бронирование, удаление аккаунта и т.д.). Вебхуки, как правило, представляют собой GET или POST запросы. GET передаёт параметры в URL запроса, а POST — в теле запроса. GET чаще используется для запроса информации, POST — для отправки данных.
Webhook и API: ключевое отличие
Разница между вебхуком и API заключается в инициаторе запроса.
При работе с API мы сначала делаем запрос на сервер, чтобы узнать о наступлении события, а затем — запрос на получение информации. Мы — инициаторы.
В случае вебхука сервер сам отправляет информацию, когда событие происходит. Нам даже спрашивать не нужно.
Практический пример: интернет-магазин
Представим интернет-магазин, где нужно получать уведомления о новых заказах. Endpoint (например, zakazy.php) — это скрипт, доступный через веб, куда платформа магазина будет отправлять вебхуки об успешных заказах.
Логика скрипта может включать создание заказа в CRM-системе на основе параметров, полученных через вебхук (номер заказа, список товаров и т.д.). Например, скрипт может добавить в заказ игрушечную гитару, если заказан парик «Мохнатый Рокер».
Ограничения и безопасность Webhook
Вебхуки не подходят для больших объёмов данных и не гарантируют доставку. Без аутентификации и шифрования они могут быть небезопасными.
Поэтому вебхуки лучше использовать для небольших событий, не передавая большие данные. Для получения данных эффективнее отправлять в вебхуке идентификатор события, а затем вытягивать данные с сервера через API, используя этот идентификатор.
Обеспечение безопасности Webhook
Для обеспечения безопасности вебхуков необходимо использовать соответствующие методы аутентификации и шифрования.