ћерион Ќетворкс

7 минут

≈сли вас удивл€ет то, каким образом веб-приложени€ могут взаимодействовать друг с другом и передавать информацию дл€ оптимизации операций, то вам следует познакомитьс€ с Webhook, веб-перехватчиком.

Webhook

Webhook (он же веб-перехватчик) Ц это больше, чем просто средство информационного взаимодействи€ дл€ онлайн-сервисов. Webhook Ц это достаточно любопытна€ технологи€, используема€ дл€ запуска приложений. Ёта стать€ позволит получить четкое понимание того, что же такое Webhook и какие методы его работы существуют.


„то такое Webhook: быстрый экскурс

Webhook Ц это автоматически сгенерированный HTTP-запрос, созданный на основе каких-то данных. ќн запускаетс€ предопределенным событием или действием в исходной системе и передаетс€ системе, с которой исходна€ система пытаетс€ установить св€зь.

Webhook работает быстрее, чем опрос или API. ¬месте с этим дл€ разработчиков он €вл€етс€ менее трудоемким с точки зрени€ работы. ѕрименительно к приложени€м, Webhook Ц это не что иное, как SMS-уведомлени€, которые мы получаем во врем€ использовани€ приложени€. Ќапример, при покупке некого товара в »нтернете продавец присылает вам уведомление по SMS.

јналогично, каждый раз, когда в исходной системе происходит некоторое событие/действие, система принимающей стороны уведомл€етс€ через Webhook.


ƒл€ чего нужен Webhook?

Webhook используетс€ дл€ св€зи приложений и быстрого обмена данными между системой-источником и системой-получателем. Ёто приводит к двусторонней св€зи между двум€ различными сетевыми системами.

Ќиже приведен список нескольких сценариев, при который Webhook справитс€ лучше, чем любое другое средство св€зи приложений:

  • »спользование Webhook дл€ передачи информации о событи€х в различные базы данных.
  • “ребуетс€ мгновенный ответ приложени€ при выполнении определенного действи€.
  • »спользование Webhook дл€ беспреп€тственной синхронизации данных клиентов в приложении.
  • Ќеобходимость иметь модель push-уведомлений дл€ получени€ своевременных обновлений.
  • —в€зь должна быть взаимно-однозначной.
  • Webhook может помочь установить соединение между средством массовой email-рассылки/управлени€ проводимыми акци€ми и платежными системами.
  • –азработчики требуют приравн€ть 2 системы к временной системе св€зи.

ѕринима€ во внимание все эти утилиты, Webhook можно назвать ключевым инструментом дл€ разработки SaaS-приложений. ќдним из реально существующих примеров использовани€ Webhook €вл€етс€ Shopify, который использует веб-перехватчик, например, дл€ операций автоматического обновлени€ корзины или объ€влени€ о продаже.

≈ще одной известной платформой €вл€етс€ Stripe. ќна использует Webhook дл€ передачи сведений, св€занных с обновлени€ми учетных записей, уведомлений об оплате и др.

Webhook

Webhook vs API

„еловеку, не €вл€ющемус€ специалистом в данной области, может показатьс€, что Webhook и API это одно и то же, поскольку они оба используютс€ дл€ установки св€зи между приложени€ми. —итуаци€ усугубл€етс€, когда некоторые разработчики называют Webhook обратным API. ¬ данном случае только опытный разработчик сможет пон€ть разницу между этими двум€ технологи€ми и использовать их. ћы подготовили краткий обзор основных различий между Webhook и API.

Webhook vs API

ќбе эти технологии, как прин€то считать, используютс€ приложени€ми дл€ передачи информации другому приложению. ¬ общих чертах они работают одинаково.  лючевое различие заключаетс€ в процессе получени€ данных.

  • API использует процесс Ђопросаї дл€ получени€ необходимых данных. ќпрос (polling) Ц это выполнение запросов на сервер с целью проверки по€влени€ новых данных.
  • Webhook работает по принципу Ђпринудительной отправки данныхї, то есть как только происходит инициирующее событие, из источника отправл€ютс€ необходимые данные.
  • API ожидает по€влени€ новых данных и требует периодической активности, в то врем€ как Webhook активируетс€ автоматически при возникновении событи€.
  • ≈сли говорить об их практической реализации, то они принципиально разные. Ќапример, API св€зываетс€ с продавцом, чтобы удостоверитьс€, что нужный вам товар есть в наличии, а Webhook попросит продавца самому св€затьс€ с вами, как только нужный товар будет доступен. ѕри таком подходе обе стороны эконом€т врем€ и усили€.
  • Ѕезопасность Web API Ц сложна€ задача, поскольку запросы выполн€ютс€ снова и снова, и каждый раз необходимо внедр€ть методы обеспечени€ безопасности API. ќбеспечить безопасность Webhook относительно просто, поскольку запросы производ€тс€ не так часто.
  • Webhook лучше использовать, когда требуютс€ обновлени€ приложени€ в режиме реального времени, а API Ц когда часто обновл€етс€ серверное приложение.
  • Webhook Ц это простейша€ модель API. API Ц это полноценный €зык приложений, способный выполн€ть добавление, удаление и извлечение данных. Webhook работает автоматически, в то врем€ как API требует некоторых усилий разработчика.
  • Webhook не €вл€етс€ широко поддерживаемым, в то врем€ как большинство сторонних интеграций принимают API.
Webhook vs API

 ак работает Webhook?

Ќа первый взгл€д все кажетс€ похожим, но Webhook включает в себ€ определЄнный сложный процесс. ¬от как это работает:

Ўаг 1: √енераци€ запроса

ƒл€ использовани€ Webhook система должна быть достаточно оборудована дл€ поддержки всего процесса. ћожно разработать дружественную к Webhook систему, осуществл€€ несколько HTTP-запросов дл€ различных событий. ќснованный на этом принципе Webhook имеет хорошую совместимость с платформой SaaS, поскольку присутствует поддержка нескольких событий. “акже с Webhook совместимы такие платформы, как GitHub, Shopify, Twilio, Stripe и Slack.

ƒл€ начала нужно зарегистрироватьс€, чтобы прин€ть Webhook'и. –егистраци€ должна быть проведена дл€ более чем одного событи€. ѕосле регистрации на целевой URL будет автоматически сгенерирован запрос Webhook. Ётот запрос обработаетс€ автоматически, когда произойдет определенное событие.

Ўаг 2: ѕрименение Webhook

 огда процесс подготовки завершен, можно использовать Webhook'и. ѕроцесс можно упростить, если вы создадите свои Webhook и протестируете их на пригодность. ≈сли вам покажетс€ это слишком т€желым, то вы можете просто добавить нужный URL-адрес веб-перехватчика в приложение и начать делитьс€ данными.

ƒл€ использовани€ Webhook вы можете использовать средства, указанные ниже:

1. RequestBin и Postman дл€ тестировани€ Webhook

 ак уже отмечалось, тестирование Webhook Ц это наиболее эффективный способ пон€ть его метод работы. RequestBin и Postman Ц два самых попул€рный инструмента дл€ тестировани€.

»спользу€ RequestBin, разработчики могут создавать нужные URL-адреса веб-перехватчиков и обмениватьс€ данными, чтобы проверить, как он их идентифицирует. Postman аналогично может обрабатывать процесс отправки запроса дл€ терминала и выделенный код приложени€. –азработчик может свободно работать с кодировкой JSON и XML.

2. ќбщение приложений

“естирование Webhook было исчерпывающим. » теперь можно приступить к делу и позволить приложени€м общатьс€ между собой. ƒл€ начала разработчикам необходимо активировать Webhook триггерных приложений.

 ак правило, каждое приложение имеет большое количество настроек веб-перехватчиков. „тобы получить данные из используемого триггерного приложени€, необходимо открыть настройку Webhook в заданной форме. Ѕудет сгенерировано поле URL и варианты дл€ спецификации HTTP-запроса веб-перехватчика.

Ќа следующем шаге уже необходимо использовать URL-адреса приложени€, получающего данные. ¬ этом приложении каждый документ имеет свой конкретный URL-адрес сли€ни€. —копируйте URL-адрес сли€ни€ или любой другой предполагаемый URL-адрес приложени€. «атем снова перейдите в приложение-триггер и вставьте скопированный URL-адрес веб-перехватчика из приложени€, получающего данные, в поле URL-адреса приложени€-триггера. —охраните изменени€. “еперь приложение готово к работе.

¬ы можете использовать любой из вышеупом€нутых средств включени€ Webhook. „тобы концепци€ работы была более пон€тна, ниже мы привели пример работы Webhook Shopify:

ѕример Webhook

ѕример Webhook

ƒавайте продолжим приведенный выше пример Shopify. ѕредположим, что новый пользователь только что разместил 2 заказа в интернет-магазине после подтверждени€ адреса электронной почты. ѕолучение информации с помощью событи€ customer/update будет выгл€деть примерно так:

HTTP/1.1 200 OK
{
  "webhook": {
  "id": 744408886555322224,
  "email": "ss@testmail.com",
  "accepts_marketing": false,
  "created_at": null,
  "updated_at": null,
  "first_name": "Jane",
  "last_name": "Doe",
  "orders_count": 2,
  "state": "disabled",
  "total_spent": "0.00",
  "last_order_id": 54254, 54258
  "note": "The user registered from India and uses store for sending gifts",
  "verified_email": true,
  "multipass_identifier": null,
  "tax_exempt": false,
  "phone": 8585858585,
  "tags": "retailer",
  "last_order_name": null,
  "currency": "INR",
  "addresses": [

  ],
  "accepts_marketing_updated_at": null,
  "marketing_opt_in_level": null,
  "admin_graphql_api_id": "gid:\/\/shopify\/Customer\/744408886555322224" }
}    

«аключение

ѕроцесс передачи данных €вл€етс€ ключевым во взаимодействии человека и веб-приложений. Webhook делает взаимодействие между приложени€ми быстрым, беспреп€тственным и не таким сложным. Webhook €вл€етс€ альтернативой API и автоматизирует коммуникационное соединение.


—кидки 50% в Merion Academy

¬ыбрать курс