Sdílet prostřednictvím


přehled webhooků ASP.NET

Webhooky je jednoduchý vzor HTTP, který poskytuje jednoduchý model pub/sub pro propojení webových rozhraní API a služeb SaaS. Když ve službě dojde k události, odešle se registrovaným odběratelům oznámení ve formě požadavku HTTP POST. Požadavek POST obsahuje informace o události, které příjemci umožňují jednat odpovídajícím způsobem.

Vzhledem k jejich jednoduchosti jsou webhooky již zpřístupněny velkým počtem služeb, včetně Dropboxu, GitHubu, Bitbucketu, MailChimpu, PayPalu, Slacku, Stripe, Trello a mnoha dalších. Webhook může například znamenat, že se změnil soubor v Dropboxu, byla potvrzena změna kódu na GitHubu, byla zahájena platba přes PayPal nebo byla vytvořena karta v Trello. Možnosti jsou nekonečné!

Microsoft ASP.NET WebHooks usnadňuje odesílání a přijímání webhooků v rámci ASP.NET aplikace:

  • Na straně příjmu poskytuje běžný model pro příjem a zpracování webhooků od libovolného počtu poskytovatelů webhooků. Přichází z krabice s podporou pro Dropbox, GitHub, Bitbucket, MailChimp, PayPal, Pusher, Salesforce, Slack, Stripe, Trello, WordPress a Zendesk , ale je snadné přidat podporu pro další.

  • Na straně odesílání poskytuje podporu pro správu a ukládání odběrů a také pro odesílání oznámení o událostech správné skupině odběratelů. To vám umožní definovat vlastní sadu událostí, které se předplatitelé můžou přihlásit k odběru, a upozornit je, když se něco stane.

V závislosti na vašem scénáři je možné tyto dvě části použít společně nebo odděleně. Pokud potřebujete pouze přijímat webhooky z jiných služeb, pak můžete použít pouze část příjemce; Pokud chcete webhooky vystavit jenom ostatním uživatelům, můžete to udělat.

Kód cílí ASP.NET webového rozhraní API 2 a ASP.NET MVC 5 a je k dispozici jako OSS na GitHubu.

Přehled webhooků

Webhooks je vzor, který znamená, že se liší, jak se používá mezi službami, ale základní myšlenka je stejná. Webhooky si můžete představit jako jednoduchý model pub/sub, ve kterém se uživatel může přihlásit k odběru událostí, které se dějí jinde. Oznámení událostí se šíří jako požadavky HTTP POST obsahující informace o samotné události.

Požadavek HTTP POST obvykle obsahuje objekt JSON nebo data formuláře HTML určená odesílatelem webhooku, včetně informací o události, která způsobuje aktivaci webhooku. Například text požadavku POST webhooku z GitHubu vypadá takto v důsledku otevření nového problému v konkrétním úložišti:

{
  "action": "opened",
  "issue": {
      "url": "https://api.github.com/repos/octocat/Hello-World/issues/1347",
      "number": 1347,
      ...
  },
  "repository": {
      "id": 1296269,
      "full_name": "octocat/Hello-World",
      "owner": {
          "login": "octocat",
          "id": 1
          ...
      },
      ...
  },
  "sender": {
      "login": "octocat",
      "id": 1,
      ...
  }
}

Aby se zajistilo, že webhook skutečně pochází od zamýšleného odesílatele, je požadavek POST nějakým způsobem zabezpečen a poté ověřen příjemcem. Například webhooky GitHubu obsahují hlavičku HTTP X-Hub-Signature s hodnotou hash textu požadavku, která je kontrolována implementací příjemce, abyste se o to nemuseli starat.

Tok webhooku obecně vypadá přibližně takto:

  • Odesílatel webhooku zveřejňuje události, ke kterým se klient může přihlásit. Události popisují pozorovatelné změny systému, například vložení nové položky dat, dokončení procesu nebo něco jiného.

  • Příjemce webhooku se přihlásí k odběru tak, že zaregistruje webhook, který se skládá ze čtyř věcí:

    1. Identifikátor URI pro místo, kde by mělo být publikováno oznámení o události ve formě požadavku HTTP POST;

    2. Sada filtrů popisující konkrétní události, pro které by měl být aktivován WebHook;

    3. Tajný klíč, který se používá k podepsání požadavku HTTP POST;

    4. Další data, která mají být zahrnuta do požadavku HTTP POST. Můžou to být například další pole hlavičky HTTP nebo vlastnosti zahrnuté v textu požadavku HTTP POST.

  • Jakmile dojde k události, najdou se odpovídající registrace webhooků a odesílají se požadavky HTTP POST. Generování požadavků HTTP POST se obvykle několikrát opakuje, pokud z nějakého důvodu příjemce nereaguje nebo pokud požadavek HTTP POST způsobí chybovou odpověď.

Kanál zpracování webhooků

Kanál zpracování Microsoft ASP.NET WebHooks pro příchozí webhooky vypadá takto:

kanál pro zpracování webhooků ASP.NET

Tady jsou dva klíčové koncepty : Receivers (Přijímače ) a Handlers (Obslužné rutiny):

  • Příjemci zodpovídají za zpracování konkrétní varianty webhooku od daného odesílatele a za vynucování kontrol zabezpečení, které zajistí, že požadavek webhooku skutečně pochází od zamýšleného odesílatele.

  • Obslužné rutiny jsou obvykle místo, kde uživatelský kód spouští zpracování konkrétního webhooku.

V následujících uzlech jsou tyto koncepty popsány podrobněji.