欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報(bào)邀請碼778899分享:【W(wǎng)eb】WebHook詳解

柚子快報(bào)邀請碼778899分享:【W(wǎng)eb】WebHook詳解

http://yzkb.51969.com/

文章目錄

webhook簡介什么是 webhook?webhook 有什么用?webhook請求過程使用 webhookWebhook POST 或 GETWebhook 與輪詢何時(shí)使用 webhookAsp .Net接受與處理接口處理

發(fā)送

WebHook和消息隊(duì)列區(qū)別與聯(lián)系來源

webhook簡介

在當(dāng)今高度連接的網(wǎng)絡(luò)世界中,沒有什么可以孤立地發(fā)揮最佳作用。完成一項(xiàng)任務(wù)(幾乎)總是需要多個(gè)實(shí)體的參與。電子商務(wù)應(yīng)用程序需要與支付系統(tǒng)通信,支付系統(tǒng)需要與銀行系統(tǒng)通信,銀行系統(tǒng)需要與客戶賬戶通信…你看到模式了嗎?

獨(dú)立在線系統(tǒng)相互通信和共享數(shù)據(jù)的能力是當(dāng)今在線服務(wù)有價(jià)值的核心。在這篇文章中,將介紹 webhook。 Webhook 是促進(jìn)在線服務(wù)之間通信的眾多方法之一,在本文結(jié)束時(shí),您將完全了解 Webhook 是什么、它們?nèi)绾喂ぷ饕约昂螘r(shí)使用它們。

什么是 webhook?

Webhook 是一個(gè) HTTP 請求,由源系統(tǒng)中的事件觸發(fā)并發(fā)送到目標(biāo)系統(tǒng),通常帶有數(shù)據(jù)負(fù)載。 Webhook 是自動(dòng)化的,換句話說,當(dāng)它們的事件在源系統(tǒng)中被觸發(fā)時(shí),它們會(huì)自動(dòng)發(fā)送出去。

這為一個(gè)系統(tǒng)(源)在事件發(fā)生時(shí)與另一個(gè)系統(tǒng)(目標(biāo))“對話”(HTTP 請求)提供了一種方式,并共享有關(guān)已發(fā)生事件的信息(請求有效負(fù)載)。

webhook 有什么用?

根據(jù)上面的定義,我相信您已經(jīng)了解了 webhook 的用途。簡而言之,webhook 用于將一個(gè)系統(tǒng)中事件的發(fā)生傳達(dá)給另一個(gè)系統(tǒng),并且它們經(jīng)常共享有關(guān)該事件的數(shù)據(jù)。然而,一個(gè)例子總是更容易說明,所以讓我們看一個(gè) webhook 的例子。

假設(shè)您訂閱了流媒體服務(wù)。每個(gè)月初,您的信用卡都會(huì)被扣款,您的銀行需要通過短信或電子郵件與您溝通。銀行系統(tǒng)(源)可以使用 webhook 調(diào)用郵件或 SMS 服務(wù)(目標(biāo)),以便在每次從您的卡中扣款時(shí)立即向您發(fā)送借記通知。

銀行系統(tǒng)還發(fā)送有關(guān)費(fèi)用的信息,郵件或 SMS 服務(wù)使用這些信息為您的客戶構(gòu)建合適的消息。

webhook請求過程

對于發(fā)送 webhook 的系統(tǒng),系統(tǒng)必須能夠支持該過程。您可以通過觸發(fā)針對不同類型的事件的HTTP請求來構(gòu)建系統(tǒng)來發(fā)送Webhooks和松弛。

這些平臺(tái)根據(jù)其中發(fā)生的活動(dòng)支持不同類型的事件。

要接收 webhook 請求,您必須注冊平臺(tái)為其提供 webhook 的一個(gè)或多個(gè)事件(也稱為主題)。 Webhook 請求將被發(fā)送到應(yīng)用程序的目標(biāo)端點(diǎn),因此您需要為其構(gòu)建一個(gè)并將 URL 注冊為該事件的 Webhook URL。

一旦事件的 webhook 注冊完成并添加了端點(diǎn),您將在每次事件發(fā)生時(shí)提供的目標(biāo) URL 處收到 webhook 請求。

使用 webhook

現(xiàn)在您已經(jīng)注冊了 webhook 請求,您必須準(zhǔn)備好接收它們。 Webhook 是常規(guī)的 HTTP 請求,應(yīng)該這樣處理。 webhook 提供程序始終具有有關(guān) webhook URL 端點(diǎn)的實(shí)現(xiàn)詳細(xì)信息的文檔,以接收請求并訪問有效負(fù)載(如果有)。

Webhook 有效負(fù)載采用序列化的表單編碼 JSON 或 XML 格式。

Webhook 是一種單向通信系統(tǒng),但最佳實(shí)踐是返回 200 或 302 狀態(tài)代碼,讓源應(yīng)用程序知道您已收到它。

還建議使您端的 webhook 請求操作具有冪等性,因?yàn)槟承┰磻?yīng)用程序可以多次發(fā)送相同的 webhook 請求。在這種情況下,您希望確保您對 webhook 請求的響應(yīng)不會(huì)重復(fù),因?yàn)檫@可能會(huì)導(dǎo)致系統(tǒng)受損。有關(guān)實(shí)現(xiàn) webhook 冪等性的更多詳細(xì)信息,請查看這篇文章。

Webhook POST 或 GET

您可能會(huì)以 GET 或 POST 請求的形式獲取 webhook 請求,具體取決于 webhook 提供程序。 GET webhook 請求很簡單,它們的有效負(fù)載作為查詢字符串附加到 webhook URL。 POST webhook 請求的負(fù)載在請求正文中,還可能包含身份驗(yàn)證令牌等屬性。

Webhook 與輪詢

輪詢是指您的應(yīng)用程序定期調(diào)用 API 以檢查是否發(fā)生事件或是否存在新數(shù)據(jù)。另一方面,當(dāng)事件實(shí)時(shí)發(fā)生時(shí),Webhook 會(huì)手動(dòng)將數(shù)據(jù)推送到您的應(yīng)用程序。

為了用一個(gè)相關(guān)的例子來捕捉這兩種方法之間的區(qū)別,投票就像去郵局檢查你是否有新郵件。使用 webhook 基本上是每次您收到新郵件時(shí),只需向郵遞員提供您的家庭地址,即可將郵件遞送到您家。

與 webhook 相比,輪詢更耗費(fèi)資源,因?yàn)樗梢栽诎l(fā)現(xiàn)新信息之前接受多個(gè)網(wǎng)絡(luò)請求,而 webhook 僅在有新信息時(shí)才發(fā)出網(wǎng)絡(luò)請求。

何時(shí)使用 webhook

這里的關(guān)鍵字是實(shí)時(shí)。當(dāng)您想要:

實(shí)時(shí)了解連接系統(tǒng)中的事件實(shí)時(shí)發(fā)送信息到目的地尋找比投票更便宜的替代方案

這些類型的場景示例包括:

電子商務(wù)商店通知您的發(fā)票應(yīng)用程序有關(guān)銷售電子商務(wù)商店在特定商品缺貨時(shí)通知商家支付網(wǎng)關(guān)通知商家付款版本控制系統(tǒng)通知團(tuán)隊(duì)成員提交到存儲(chǔ)庫監(jiān)控系統(tǒng)提醒管理員系統(tǒng)中的錯(cuò)誤或異?;顒?dòng)跨系統(tǒng)同步信息——例如,當(dāng)用戶在您的 HR 或 CRM 系統(tǒng)中更改其電子郵件時(shí),他們在工資單或發(fā)票系統(tǒng)中的電子郵件也會(huì)更改

Asp .Net

接受與處理

接口

接收 WebHook 取決于發(fā)送方是誰。 有時(shí),注冊 WebHook 的其他步驟會(huì)驗(yàn)證訂閱者是否真的正在偵聽。 某些 WebHook 提供推送到拉取模型,其中 HTTP POST 請求僅包含對事件信息的引用,然后獨(dú)立檢索該信息。 通常,安全模型會(huì)有所不同。

Microsoft ASP.NET WebHook 的目的是使 API 連接起來更簡單、更一致,而無需花費(fèi)大量時(shí)間來了解如何處理 WebHook 的任何特定變體。

WebHook 接收方負(fù)責(zé)接受和驗(yàn)證來自特定發(fā)送方的 WebHook。 WebHook 接收器可以支持任意數(shù)量的 WebHook,每個(gè) WebHook 都有其自己的配置。 例如,GitHub WebHook 接收器可以接受任意數(shù)量的 GitHub 存儲(chǔ)庫中的 WebHook。

WebHook 接收器 URI

通過安裝 Microsoft ASP.NET WebHook,可以獲得一個(gè)常規(guī) WebHook 控制器,該控制器接受來自開放式服務(wù)數(shù)量的 WebHook 請求。 請求到達(dá)時(shí),它會(huì)選取已安裝用于處理特定 WebHook 發(fā)送方的適當(dāng)接收方。

此控制器的 URI 是向服務(wù)注冊的 WebHook URI,格式如下:

https:///api/webhooks/incoming//{id}

出于安全原因,許多 WebHook 接收器要求 URI 是 https URI,在某些情況下,它還必須包含其他查詢參數(shù),該參數(shù)用于強(qiáng)制只有預(yù)期方才能將 WebHook 發(fā)送到上述 URI。

組件 是接收方的名稱,例如 github 或 slack。

{id} 是一個(gè)可選標(biāo)識符,可用于標(biāo)識特定的 WebHook 接收器配置。 這可用于向特定接收器注冊 N WebHook。 例如,以下三個(gè) URI 可用于注冊三個(gè)獨(dú)立的 WebHook:

https:///api/webhooks/incoming/github https:///api/webhooks/incoming/github/12345 https:///api/webhooks/incoming/github/54321

安裝 WebHook 接收器

若要使用 Microsoft ASP.NET WebHook 接收 WebHook,首先為要從中接收 WebHook 的 WebHook 提供程序或提供程序安裝 Nuget 包。 Nuget 包名為 Microsoft.AspNet.WebHooks.Receivers.* , 其中最后一部分指示服務(wù)受支持。 例如

Microsoft.AspNet.WebHooks.Receivers.GitHub 支持從 GitHub 接收 WebHook 和 Microsoft.AspNet.WebHooks.Receivers.Custom 支持接收由 ASP.NET WebHook 生成的 WebHook。

現(xiàn)可找到對 Dropbox、GitHub、MailChimp、PayPal、Pusher、Salesforce、Slack、Stripe、Trello 和 WordPress 的支持,但可以支持任意數(shù)量的其他提供程序。

配置 WebHook 接收器

WebHook 接收器是通過 IWebHookReceiverConfig 接口配置的,可以使用任何依賴項(xiàng)注入模型注冊該接口的特定實(shí)現(xiàn)。 默認(rèn)實(shí)現(xiàn)使用可在Web.config文件中設(shè)置的應(yīng)用程序設(shè)置,或者,如果使用 Azure веб-приложения,可以通過 Azure 門戶進(jìn)行設(shè)置。 應(yīng)用程序設(shè)置密鑰的格式如下所示:

MS_WebHookReceiverSecret_

該值是一個(gè)以逗號分隔的值列表,這些值與 WebHook 已注冊的 {id} 值匹配,例如:

MS_WebHookReceiverSecret_GitHub = , 12345=, 54321=

初始化 WebHook 接收器

WebHook 接收器通過注冊它們進(jìn)行初始化,通常位于 WebApiConfig 靜態(tài)類中,例如:

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();

}

}

}

處理

WebHook 接收方驗(yàn)證 WebHook 請求后,即可由用戶代碼處理。 這是 處理程序 的傳入位置。 處理程序派生自 IWebHookHandler 接口,但通常使用 WebHookHandler 類而不是直接從接口派生。

WebHook 請求可由一個(gè)或多個(gè)處理程序處理。 根據(jù)各自的 Order 屬性按順序調(diào)用處理程序,其中 Order 是一個(gè)簡單的整數(shù) (建議介于 1 到 100 之間) :

處理程序可以選擇在 WebHookHandlerContext 上設(shè)置 Response 屬性,這將導(dǎo)致處理停止,并將響應(yīng)作為 HTTP 響應(yīng)發(fā)回 WebHook。 在上述情況下,處理程序 C 不會(huì)調(diào)用,因?yàn)樗捻樞蚋哂?B 和 B 設(shè)置響應(yīng)。

設(shè)置響應(yīng)通常僅與 WebHook 相關(guān),其中響應(yīng)可以將信息傳回原始 API。 例如,Slack WebHook 將響應(yīng)發(fā)布回 WebHook 來自的通道的情況。 如果處理程序只想從該特定接收器接收 WebHook,則處理程序可以設(shè)置 Receiver 屬性。 如果未設(shè)置接收方,則會(huì)為其調(diào)用所有接收方。

另一種常見的響應(yīng)用途是使用 410 已返回 的響應(yīng)來指示 WebHook 不再處于活動(dòng)狀態(tài),并且不應(yīng)提交進(jìn)一步的請求。

默認(rèn)情況下,所有 WebHook 接收器都將調(diào)用處理程序。 但是,如果 Receiver 屬性設(shè)置為處理程序的名稱,則該處理程序?qū)H接收該接收方的 WebHook 請求。

處理 WebHook

調(diào)用處理程序時(shí),它將獲取一個(gè) WebHookHandlerContext ,其中包含有關(guān) WebHook 請求的信息。 數(shù)據(jù)(通常是 HTTP 請求正文)可從 Data 屬性獲取。

數(shù)據(jù)類型通常是 JSON 或 HTML 表單數(shù)據(jù),但如果需要,可以強(qiáng)制轉(zhuǎn)換為更具體的類型。 例如,ASP.NET WebHook 生成的自定義 WebHook 可以轉(zhuǎn)換為 CustomNotifications 類型,如下所示:

public class MyWebHookHandler : WebHookHandler

{

public MyWebHookHandler()

{

this.Receiver = "custom";

}

public override Task ExecuteAsync(string generator, WebHookHandlerContext context)

{

CustomNotifications notifications = context.GetDataOrDefault();

foreach (var notification in notifications.Notifications)

{

...

}

return Task.FromResult(true);

}

}

排隊(duì)處理

如果響應(yīng)在幾秒鐘內(nèi)未生成響應(yīng),則大多數(shù) WebHook 發(fā)送方將重新發(fā)送 WebHook。 這意味著處理程序必須在該時(shí)間段內(nèi)完成處理,以免再次調(diào)用它。

如果處理需要更長的時(shí)間或更好地單獨(dú)處理,則可以使用 WebHookQueueHandler 將 WebHook 請求提交到隊(duì)列,例如 Azure 存儲(chǔ)隊(duì)列。

此處提供了 WebHookQueueHandler 實(shí)現(xiàn)的概述:

public class QueueHandler : WebHookQueueHandler

{

public override Task EnqueueAsync(WebHookQueueContext context)

{

// Enqueue WebHookQueueContext to your queuing system of choice

return Task.FromResult(true);

}

}

發(fā)送

翻譯搬移

WebHook和消息隊(duì)列區(qū)別與聯(lián)系

來源

Webhook 解釋:什么是 Webhook 以及它們?nèi)绾喂ぷ? ASP.NET WebHook 接收器 ASP.NET WebHook 處理程序

柚子快報(bào)邀請碼778899分享:【W(wǎng)eb】WebHook詳解

http://yzkb.51969.com/

文章鏈接

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/18936555.html

發(fā)布評論

您暫未設(shè)置收款碼

請?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄