přehled ASP.NET WebHooks

WebHooks je lehký http vzor poskytující jednoduchý pub/sub model pro zapojení spolu webová api a saas služby. Pokud dojde k události ve službě, je odesláno oznámení ve formě požadavku HTTP POST registrovaným odběratelům. Požadavek POST obsahuje informace o události, která umožňuje příjemci jednat odpovídajícím způsobem.

Vzhledem k jejich jednoduchosti, WebHooks jsou již vystaveny velké množství služeb, včetně Dropbox, GitHub, Bitbucket, MailChimp, PayPal, Slack, Stripe, Trello, a mnoho dalších. WebHook může například znamenat, že se v Dropboxuzměnil soubor nebo že byla v GitHubu spáchána změna kódu, nebo byla v PayPaluzahájena platba nebo byla vytvořena karta v Trello. Možnosti jsou nekonečné!

Microsoft ASP.NET WebHooks usnadňuje odesílání i přijímání WebHooks jako součást vaší ASP.NET aplikace:

  • Na straně příjmu poskytuje společný model pro příjem a zpracování WebHooks z libovolného počtu zprostředkovatelů WebHook. Přichází z krabice s podporou 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ů, stejně jako pro odesílání oznámení událostí na správnou sadu odběratelů. To vám umožní definovat vlastní sadu událostí, ke kterým se mohou odběratelé přihlásit, a upozornit je, když se něco stane.

Obě části lze použít společně nebo odděleně v závislosti na vašem scénáři. Pokud potřebujete pouze přijímat WebHooks z jiných služeb, pak můžete použít pouze část přijímače; Pokud chcete pouze vystavit WebHooks pro ostatní konzumovat, pak můžete udělat právě to.

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

WebHooks – přehled

WebHooks je vzor, což znamená, že se liší, jak se používá od služby ke službě, ale základní myšlenka je stejná. WebHooks si můžete myslet jako jednoduchý model pub/sub, kde se uživatel může přihlásit k odběru událostí, které se dějí jinde. Oznámení událostí jsou šířeny jako požadavky HTTP POST obsahující informace o samotné události.

Požadavek HTTP POST obvykle obsahuje data jazyka JSON nebo formuláře HTML určená odesílatelem WebHooku, včetně informací o události, která způsobuje aktivaci webhooku. Například tělo požadavku WebHook POST z GitHubu vypadá takto v důsledku otevření nového problému v určité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,
      ...
  }
}

Chcete-li zajistit, že WebHook je skutečně od zamýšleného odesílatele, požadavek POST je zabezpečen nějakým způsobem a poté ověřen příjemcem. Například GitHub WebHooks obsahuje hlavičku HTTP s podpisem X-Hub s hodnotou hash těla požadavku, která je kontrolována implementací příjemce, takže se o to nemusíte starat.

Tok WebHook obecně jde něco takového:

  • Odesílatel WebHook zveřejňuje události, které klient může přihlásit k odběru. Události popisují pozorovatelné změny v systému, například, že byla vložena nová datová položka, že byl dokončen proces nebo něco jiného.

  • WebHook přijímač přihlásí registrací WebHook skládající se ze čtyř věcí:

    1. Identifikátor URI, pro kde by mělo být oznámení o události zaúčtováno 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ůže se například jedná například o další pole záhlaví PROTOKOLU HTTP nebo vlastnosti zahrnuté v textu požadavku HTTP POST.

  • Jakmile dojde k události, jsou nalezeny odpovídající Registrace WebHook a http post požadavky jsou odeslány. Generování požadavků HTTP POST jsou obvykle opakovány několikrát, pokud z nějakého důvodu příjemce neodpovídá nebo požadavek HTTP POST má za následek odpověď na chybu.

Kanál zpracování webhooků

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

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

Dva klíčové pojmy zde jsou přijímače a obslužné rutiny:

  • Příjemci jsou zodpovědní za zpracování konkrétní příchuť WebHook od daného odesílatele a pro vynucení bezpečnostních kontrol, aby bylo zajištěno, že požadavek WebHook skutečně pochází od zamýšleného odesílatele.

  • Obslužné rutiny jsou obvykle tam, kde uživatelský kód běží zpracování konkrétní WebHook.

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