Megosztás a következőn keresztül:


ASP.NET WebHooks áttekintése

Figyelmeztetés

ASP.NET WebHooks elavult, és a továbbiakban nem kap frissítéseket vagy biztonsági javításokat.

A WebHooks egy egyszerű HTTP-minta, amely egyszerű pub/almodellt biztosít a webes API-k és az SaaS-szolgáltatások összekapcsoláshoz. Ha egy szolgáltatásban esemény történik, a rendszer HTTP POST-kérés formájában küld értesítést a regisztrált előfizetőknek. A POST-kérelem olyan információkat tartalmaz az eseményről, amelyek lehetővé teszik, hogy a fogadó ennek megfelelően járjon el.

Egyszerűségük miatt a WebHookokat már számos szolgáltatás teszi elérhetővé, beleértve a Dropbox, GitHub, Bitbucket, MailChimp, PayPal, Slack, Stripe, Trello stb. A WebHook például azt jelezheti, hogy egy fájl megváltozott a Dropbox-ban, vagy kódmódosítást követtek el a GitHub-ban, vagy fizetést kezdeményeztek a PayPal-on, vagy az Trello-ban új kártyát hoztak létre. A lehetőségek végtelenek!

A Microsoft ASP.NET WebHooks megkönnyíti a WebHookokok küldését és fogadását ASP.NET alkalmazás részeként:

  • A fogadó oldalon egy általános modellt biztosít a WebHookok fogadásához és feldolgozásához tetszőleges számú WebHook-szolgáltatótól. Az alapértelmezett beállítások szerint támogatást nyújt a Dropbox, GitHub, Bitbucket, MailChimp, PayPal, Pusher, Salesforce, Slack, Stripe, Trello, WordPress és Zendesk programokhoz, de könnyen hozzáadható további támogatás is.

  • A küldési oldalon támogatást nyújt az előfizetések kezeléséhez és tárolásához, valamint az eseményértesítések megfelelő előfizetőknek való küldéséhez. Ez lehetővé teszi, hogy meghatározza a saját eseménykészletét, amelyre az előfizetők feliratkozhatnak, és értesítést küldhessenek nekik, amikor a dolgok történnek.

A két rész a forgatókönyvtől függően együtt vagy külön is használható. Ha csak más szolgáltatásokból kell webhookokat fogadnia, akkor csak a fogadórészt használhatja; ha csak azt szeretné, hogy mások számára is elérhetővé tegye a WebHookokat, akkor ezt megteheti.

A kód az ASP.NET Web API 2-t és az ASP.NET MVC 5-öt célozza meg, és mint nyílt forráskód érhető el a GitHub-on.

A WebHooks áttekintése

A WebHooks egy minta, amely azt jelenti, hogy szolgáltatásról szolgáltatásra változik, de az alapötlet ugyanaz. A WebHook egy egyszerű közzétételi/előfizetési modell, ahol a felhasználó feliratkozhat máshol zajló események értesítéseire. Az eseményértesítések HTTP POST-kérésekként vannak propagálása, amelyek magukról az eseményről tartalmaznak információkat.

A HTTP POST-kérelem általában a WebHook-feladó által meghatározott JSON-objektumokat vagy HTML-űrlapadatokat tartalmazza, beleértve a WebHook eseményindítóját okozó esemény adatait is. Például egy új probléma megnyitása egy adott tárházban így jelenik meg a WebHook POST kérelem törzsében a GitHub esetében:

{
  "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,
      ...
  }
}

Annak érdekében, hogy a WebHook valóban a kívánt feladótól származhasson, a POST kérést valamilyen módon biztonságossá kell tenni, majd a fogadó ellenőrzi. Például GitHub WebHooks tartalmaz egy X-Hub-Signature HTTP-fejlécet a kérelem törzsének kivonatával, amelyet a fogadó implementáció ellenőriz, így nem kell aggódnia.

A WebHook-folyamat általában a következőhöz hasonló:

  • A WebHook-feladó olyan eseményeket tesz közzé, amelyekre az ügyfél előfizethet. Az események a rendszer megfigyelhető változásait írják le, például egy új adatelem beszúrását, egy folyamat befejezését vagy valami mást.

  • A WebHook-fogadó egy négy dologból álló WebHook regisztrálásával fizet elő:

    1. Egy URI, ahol az eseményértesítést HTTP POST-kérés formájában kell közzétenni;

    2. Szűrőkészlet, amely leírja azokat az eseményeket, amelyekre a WebHookot aktiválni kell;

    3. A HTTP POST-kérelem aláírásához használt titkos kulcs;

    4. A HTTP POST-kérelemben szerepeltetni kívánt további adatok. Ez lehet például a HTTP POST kérelem törzsében található további HTTP-fejlécmezők vagy tulajdonságok.

  • Az esemény bekövetkezése után a rendszer megtalálja a megfelelő WebHook-regisztrációkat, és HTTP POST-kérelmeket küld el. A HTTP POST-kérések generálása általában többször is megismétlhető, ha valamilyen okból a címzett nem válaszol, vagy ha a HTTP POST-kérés hibaválaszt eredményez.

WebHooks feldolgozási folyamat

A Microsoft ASP.NET WebHooks feldolgozási folyamat a bejövő WebHookokhoz a következőképpen néz ki:

ASP.NET WebHooks feldolgozási folyamat

A két fő fogalom a fogadók és a kezelők:

  • A fogadók felelősek a WebHook adott feladótól származó ízének kezeléséért és a biztonsági ellenőrzések végrehajtásáért annak biztosítása érdekében, hogy a WebHook-kérés valóban a kívánt feladótól származik.

  • A kezelők általában az adott WebHook feldolgozásának felhasználói kódját futtatják.

A következő csomópontokban ezeket a fogalmakat részletesebben ismertetjük.