Webhook vs API: в чем разница и как выбрать?

Миллиарды веб-приложений постоянно обмениваются данными — от информации об оплате вафельницы в интернет-магазине до подтверждения бронирования автобусного билета. Для таких уведомлений платформы используют вебхуки (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

Для обеспечения безопасности вебхуков необходимо использовать соответствующие методы аутентификации и шифрования.

Что будем искать? Например,программа