경고
ASP.NET WebHook은 더 이상 사용되지 않으며 더 이상 업데이트 또는 보안 수정 사항을 받지 않습니다.
WebHooks는 웹 API와 SaaS 서비스를 함께 연결하기 위한 간단한 pub/sub 모델을 제공하는 간단한 HTTP 패턴입니다. 서비스에서 이벤트가 발생하면 등록된 구독자에게 HTTP POST 요청 형식으로 알림이 전송됩니다. POST 요청에는 수신자가 적절하게 작동할 수 있도록 하는 이벤트에 대한 정보가 포함되어 있습니다.
단순성 때문에 WebHook은 이미 Dropbox, GitHub 등의 많은 서비스에 의해 노출되어 있습니다. Bitbucket, MailChimp, PayPal, SlackStripe, Trello 등 예를 들어 WebHook은 파일이 Dropbox 변경되었음을 나타낼 수 있습니다. 또는 코드 변경이 GitHub 커밋되었거나 PayPal 결제가 시작되었거나 카드가 Trello 생성되었습니다. 가능성은 무한합니다!
Microsoft ASP.NET WebHooks를 사용하면 ASP.NET 애플리케이션의 일부로 WebHook을 더 쉽게 보내고 받을 수 있습니다.
수신 쪽에서는 여러 WebHook 공급자로부터 WebHook을 수신하고 처리하기 위한 일반적인 모델을 제공합니다. Dropbox, GitHub, Bitbucket 지원으로 기본적으로 제공됩니다. MailChimp, PayPal, Pusher, SalesforceSlack, StripeTrello,WordPress 및 Zendesk 더 많은 지원을 추가하기 쉽습니다.
송신 쪽에서는 올바른 구독자 집합에 이벤트 알림을 보낼 뿐만 아니라 구독 관리 및 저장을 지원합니다. 이렇게 하면 구독자가 구독할 수 있는 고유한 이벤트 집합을 정의하고 상황이 발생할 때 이를 알릴 수 있습니다.
시나리오에 따라 두 부분을 함께 또는 따로 사용할 수 있습니다. 다른 서비스에서 WebHook만 수신해야 하는 경우 수신기 부분만 사용할 수 있습니다. 다른 사용자가 사용할 수 있도록 WebHook만 노출하려는 경우 이 작업을 수행할 수 있습니다.
이 코드는 ASP.NET Web API 2 및 ASP.NET MVC 5를 대상으로 하며 GitHub
WebHooks 개요
WebHooks는 서비스마다 사용되는 방식이 다르지만 기본 개념은 동일하다는 것을 의미하는 패턴입니다. WebHooks는 사용자가 다른 곳에서 발생하는 이벤트를 구독할 수 있는 간단한 pub/sub 모델로 생각할 수 있습니다. 이벤트 알림은 이벤트 자체에 대한 정보를 포함하는 HTTP POST 요청으로 전파됩니다.
일반적으로 HTTP POST 요청에는 WebHook이 트리거되는 이벤트에 대한 정보를 포함하여 WebHook 보낸 사람에서 결정한 JSON 개체 또는 HTML 양식 데이터가 포함됩니다. 예를 들어 GitHub WebHook POST 요청 본문은 특정 리포지토리에서 새 문제가 열린 결과로 다음과 같습니다.
{
"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,
...
}
}
WebHook이 의도한 보낸 사람으로부터 실제로 온 것인지 확인하기 위해 POST 요청은 적절한 방식으로 보호된 후 수신자가 확인 절차를 수행합니다. 예를 들어 GitHub WebHooks에는 요청 본문의 해시가 포함된 X-Hub-Signature HTTP 헤더가 포함되어 있으며, 수신자 구현에 의해 검증되므로 신경 쓸 필요가 없습니다.
WebHook 흐름은 일반적으로 다음과 같습니다.
WebHook 발신자는 클라이언트가 구독할 수 있는 이벤트를 노출합니다. 이벤트는 새 데이터 항목이 삽입되었거나, 프로세스가 완료되었거나, 다른 항목과 같이 시스템의 관찰 가능한 변경 내용을 설명합니다.
WebHook 수신기는 다음 네 가지로 구성된 WebHook을 등록하여 구독합니다.
HTTP POST 요청 형식으로 이벤트 알림을 게시해야 하는 위치에 대한 URI입니다.
WebHook이 실행될 특정 이벤트를 설명하는 필터들의 집합입니다.
HTTP POST 요청에 서명하는 데 사용되는 비밀 키입니다.
HTTP POST 요청에 포함할 추가 데이터입니다. 예를 들어 HTTP POST 요청 본문에 포함된 추가 HTTP 헤더 필드 또는 속성일 수 있습니다.
이벤트가 발생하면 일치하는 WebHook 등록이 발견되고 HTTP POST 요청이 제출됩니다. 일반적으로 수신자가 응답하지 않거나 HTTP POST 요청으로 인해 오류 응답이 발생하는 경우 HTTP POST 요청 생성이 여러 번 다시 시도됩니다.
WebHooks 처리 파이프라인
들어오는 WebHook에 대한 Microsoft ASP.NET WebHooks 처리 파이프라인은 다음과 같습니다.
여기서 두 가지 주요 개념은 수신기 및 처리기입니다.
수신자는 지정된 보낸 사람으로부터 특정 버전의 WebHook을 처리하고 WebHook 요청이 실제로 의도한 보낸 사람의 요청인지 확인하기 위해 보안 검사를 적용할 책임이 있습니다.
처리기는 일반적으로 사용자 코드가 특정 WebHook 처리를 실행하는 위치입니다.
다음 노드에서 이러한 개념은 자세한 내용에 설명되어 있습니다.