Webhook 是在指定事件發生時,向已設定端點傳送的 HTTP 請求。接收系統毋須反覆查詢服務有沒有更新;事件發生後,發送方可以主動通知它。GitHub 的Webhook 文件介紹這種按事件傳送資料的方式,並與間歇性輪詢 API 作比較。
Webhook 如何運作
接收應用程式提供端點網址,發送方則設定要回報哪些事件。事件發生時,發送方會送出包含事件資料的請求。接收端核實請求來源、檢查所需欄位,再執行獲准的操作,例如記錄更新,或把事件放入工作佇列稍後處理。
企業應用示例
以下示例僅供說明:送貨服務回報包裹狀態改變時,零售商系統可以接收 Webhook,更新訂單進度。員工之後可在訂單系統查看回報的狀態。實際做法要視乎服務商提供的事件資料和零售商的整合設計。
Webhook、API 和工作流程自動化
Webhook 負責傳送事件通知;API 定義軟件索取資料或要求執行操作的介面。接收 Webhook 後,系統可以再呼叫 API 取得完整資料。工作流程自動化則透過觸發條件、規則和操作協調工作,Webhook 可以是其中一種觸發方式。可參閱API 解說和工作流程自動化解說。
營運上的限制
成功送出請求,不代表接收端已成功處理。端點可能暫時無法使用,資料格式可能改變,發送方也可能重試,令同一事件送達多次。接收端應安全處理重試、記錄送達狀態、核實請求,並避免信任未驗證的內容。依賴即時更新前,應先了解發送方如何處理重試和失敗。
如需了解服務範圍,可參閱 technine.io 的系統整合及自動化服務。
常見問題
Webhook 是 API 嗎?
Webhook 會使用 HTTP 端點,但兩者描述不同概念:Webhook 把事件送給接收端;API 則是軟件索取資料或要求執行操作的介面。
Webhook 可以保證更新已成功處理嗎?
不能。請求可能無法送達端點,也可能在處理途中失敗。發送和接收系統都要有重試、錯誤記錄和復原安排。
同一個 Webhook 會送達多次嗎?
有可能。發送方遇到逾時或送達錯誤時,可能重試。接收端應識別重複事件,避免把同一項更新執行多次。
主要資料來源:GitHub Docs:About webhooks
