Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Elementy WebHook to lekki wzorzec HTTP zapewniający prosty model pub/sub do łączenia interfejsów API sieci Web i usług SaaS. Gdy zdarzenie występuje w usłudze, powiadomienie jest wysyłane w postaci żądania HTTP POST do zarejestrowanych subskrybentów. Żądanie POST zawiera informacje o zdarzeniu, które umożliwia odbiornikowi odpowiednie działanie.
Ze względu na ich prostotę elementy webhook są już udostępniane przez dużą liczbę usług, w tym Dropbox, GitHub, Bitbucket, MailChimp, PayPal, Slack, Stripe, Trello i wiele innych. Na przykład element WebHook może wskazywać, że plik uległ zmianie w usłudze Dropbox lub wprowadzono zmianę kodu w usłudze GitHub lub zainicjowano płatność w usłudze PayPal lub w witrynie Trello utworzono kartę. Możliwości są nieskończone!
Elementy webhook firmy Microsoft ASP.NET ułatwiają wysyłanie i odbieranie elementów WebHook w ramach aplikacji ASP.NET:
Po stronie odbieranej udostępnia typowy model odbierania i przetwarzania elementów WebHook z dowolnej liczby dostawców elementów webhook. Wychodzi z pudełka z obsługą Dropbox, GitHub, Bitbucket, MailChimp, PayPal, Pusher, Salesforce, Slack, Stripe, Trello, WordPress i Zendesk , ale łatwo jest dodać obsługę więcej.
Po stronie wysyłania zapewnia obsługę zarządzania subskrypcjami i ich przechowywania, a także wysyłania powiadomień o zdarzeniach do odpowiedniego zestawu subskrybentów. Dzięki temu można zdefiniować własny zestaw zdarzeń, które subskrybenci mogą subskrybować i powiadamiać o tym, kiedy coś się stanie.
Dwie części mogą być używane razem lub od siebie w zależności od scenariusza. Jeśli potrzebujesz tylko otrzymywać elementy WebHook z innych usług, możesz użyć tylko części odbiornika; jeśli chcesz uwidocznić elementy webhook dla innych użytkowników do użycia, możesz to zrobić.
Kod jest przeznaczony dla ASP.NET internetowego interfejsu API 2 i ASP.NET MVC 5 i jest dostępny jako system operacyjny w usłudze GitHub.
Elementy webhook — omówienie
Elementy webhook to wzorzec, który oznacza, że różni się w zależności od sposobu jej użycia z usługi do usługi, ale podstawowy pomysł jest taki sam. Elementy WebHook można traktować jako prosty model pub/pod model, w którym użytkownik może subskrybować zdarzenia dzieje się gdzie indziej. Powiadomienia o zdarzeniach są propagowane jako żądania HTTP POST zawierające informacje o samym zdarzeniu.
Zazwyczaj żądanie HTTP POST zawiera obiekt JSON lub dane formularza HTML określone przez nadawcę elementu webhook, w tym informacje o zdarzeniu powodującym wyzwolenie elementu WebHook. Na przykład treść żądania POST elementu WebHook z usługi GitHub wygląda następująco w wyniku otwarcia nowego problemu w określonym repozytorium:
{
"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 upewnić się, że element WebHook jest rzeczywiście od zamierzonego nadawcy, żądanie POST jest zabezpieczone w jakiś sposób, a następnie zweryfikowane przez odbiorcę. Na przykład elementy WebHook w usłudze GitHub zawierają nagłówek HTTP X-Hub-Signature z skrótem treści żądania, który jest sprawdzany przez implementację odbiorcy, aby nie martwić się o to.
Przepływ elementu webhook zwykle wygląda następująco:
Nadawca elementu webhook ujawnia zdarzenia, do których klient może subskrybować. Zdarzenia opisują widoczne zmiany w systemie, na przykład, że nowy element danych został wstawiony, że proces został ukończony lub coś innego.
Odbiornik elementu WebHook subskrybuje, rejestrując element WebHook składający się z czterech elementów:
Identyfikator URI, dla którego powiadomienie o zdarzeniu powinno być publikowane w postaci żądania HTTP POST;
Zestaw filtrów opisujących określone zdarzenia, dla których element WebHook powinien zostać wyzwolony;
Klucz tajny używany do podpisywania żądania HTTP POST;
Dodatkowe dane, które mają zostać uwzględnione w żądaniu HTTP POST. Może to być na przykład dodatkowe pola nagłówka HTTP lub właściwości zawarte w treści żądania HTTP POST.
Po zakończeniu zdarzenia zostaną znalezione pasujące rejestracje elementu webhook, a żądania HTTP POST zostaną przesłane. Zazwyczaj generowanie żądań HTTP POST jest ponawiane kilka razy, jeśli z jakiegoś powodu adresat nie odpowiada lub żądanie HTTP POST powoduje błąd odpowiedzi.
Potok przetwarzania elementów webhook
Potok przetwarzania elementów webhook firmy Microsoft ASP.NET dla przychodzących elementów webhook wygląda następująco:
Poniżej przedstawiono dwa kluczowe pojęcia: Odbiorniki i programy obsługi:
Odbiorcy są odpowiedzialni za obsługę konkretnego smaku elementu WebHook od danego nadawcy i wymuszania kontroli zabezpieczeń w celu zapewnienia, że żądanie elementu webhook rzeczywiście pochodzi od zamierzonego nadawcy.
Programy obsługi są zwykle miejscem, w którym kod użytkownika uruchamia przetwarzanie określonego elementu WebHook.
W poniższych węzłach te pojęcia zostały opisane bardziej szczegółowo.