WebHook 수신은 보낸 사람이 누구인지에 따라 달라집니다. 구독자가 실제로 수신 대기 중인지 확인하는 WebHook를 등록하는 추가 단계가 있는 경우도 있습니다. 일부 WebHook은 HTTP POST 요청에 이벤트 정보에 대한 참조만 포함된 푸시-투-풀 모델을 제공하며, 이 모델은 독립적으로 검색됩니다. 종종 보안 모델은 상당히 다양합니다.
Microsoft ASP.NET WebHooks의 목적은 WebHook의 특정 변형을 처리하는 방법을 알아내는 데 많은 시간을 할애하지 않고 API를 더 간단하고 일관되게 연결하는 것입니다.
WebHook 수신기는 특정 보낸 사람의 WebHooks를 수락하고 확인할 책임이 있습니다. WebHook 수신기는 각각 고유한 구성을 사용하여 다양한 WebHook를 지원할 수 있습니다. 예를 들어 GitHub WebHook 수신기는 여러 GitHub 리포지토리의 WebHook을 수락할 수 있습니다.
WebHook 수신기 URI
Microsoft ASP.NET WebHooks를 설치하면 개방형 서비스 수의 WebHook 요청을 수락하는 일반 WebHook 컨트롤러가 표시됩니다. 요청이 도착하면 특정 WebHook 발신자를 처리하기 위해 설치한 적절한 수신기를 선택합니다.
이 컨트롤러의 URI는 서비스에 등록하는 WebHook URI이며 형식입니다.
https://<host>/api/webhooks/incoming/<receiver>/{id}
보안상의 이유로 많은 WebHook 수신기는 URI가 https URI여야 하며 경우에 따라 의도한 당사자만 위의 URI에 WebHook를 보낼 수 있도록 적용하는 데 사용되는 추가 쿼리 매개 변수도 포함되어야 합니다.
<receiver>
구성 요소는 수신기의 이름입니다(예github
: 또는 slack
).
{id}는 특정 WebHook 수신기 구성을 식별하는 데 사용할 수 있는 선택적 식별자입니다. N WebHooks를 특정 수신기에 등록하는 데 사용할 수 있습니다. 예를 들어 다음 세 개의 URI를 사용하여 세 개의 독립 WebHook에 등록할 수 있습니다.
https://<host>/api/webhooks/incoming/github
https://<host>/api/webhooks/incoming/github/12345
https://<host>/api/webhooks/incoming/github/54321
WebHook 수신기 설치
Microsoft ASP.NET WebHooks를 사용하여 WebHook을 받으려면 먼저 WebHook을 수신하려는 WebHook 공급자 또는 공급자에 대한 Nuget 패키지를 설치합니다. Nuget 패키지의 이름은 Microsoft.AspNet.WebHooks.Receivers.* 입니다. 여기서 마지막 부분은 지원되는 서비스를 나타냅니다. 예를 들면 다음과 같습니다.
Microsoft.AspNet.WebHooks.Receivers.GitHub 는 GitHub 및 Microsoft.AspNet.WebHooks.Receivers.Custom에서 WebHooks 수신을 지원합니다. 사용자 지정은 ASP.NET WebHooks에서 생성된 WebHook 수신을 지원합니다.
Dropbox, GitHub, MailChimp, PayPal, Pusher, Salesforce, Slack, Stripe, Trello 및 WordPress에 대한 지원을 찾을 수 있지만 여러 다른 공급자를 지원할 수 있습니다.
WebHook 수신기 구성
WebHook 수신기는 IWebHookReceiverConfig 인터페이스를 통해 구성되며 해당 인터페이스의 특정 구현은 종속성 주입 모델을 사용하여 등록할 수 있습니다. 기본 구현은 Web.config 파일에서 설정할 수 있는 애플리케이션 설정을 사용하거나 Azure Web Apps 사용하는 경우 Azure Portal을 통해 설정할 수 있습니다.
애플리케이션 설정 키의 형식은 다음과 같습니다.
MS_WebHookReceiverSecret_<receiver>
값은 WebHook가 등록된 {id} 값과 일치하는 쉼표로 구분된 값 목록입니다. 예를 들면 다음과 같습니다.
MS_WebHookReceiverSecret_GitHub = <secret1>, 12345=<secret2>, 54321=<secret3>
WebHook 수신기 초기화
WebHook 수신기는 일반적으로 WebApiConfig 정적 클래스에서 등록하여 초기화됩니다. 예를 들면 다음과 같습니다.
namespace WebHookReceivers
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
// Load receivers
config.InitializeReceiveGitHubWebHooks();
}
}
}