1. 什么是 Webhook?
Webhook 是一個 API 概念,是微服務 API 的使用范式之一,也被成為反向 API,即前端不主動發送請求,完全由后端推送;舉個常用例子,比如你的好友發了一條朋友圈,后端將這條消息推送給所有其他好友的客戶端,就是 Webhook 的典型場景。
簡單來說,Webhook 就是一個接收 HTTP POST(或GET,PUT,DELETE)的URL,一個實現了 Webhook 的 API 提供商就是在當事件發生的時候會向這個配置好的 URL 發送一條信息,與請求-響應式不同,使用 Webhook 你可以實時接受到變化。
這又是一種對 客戶機-服務器
模式的逆轉,在傳統方法中,客戶端從服務器請求數據,然后服務器提供給客戶端數據(客戶端是在拉數據),在 Webhook 范式下,服務器更新所需提供的資源,然后自動將其作為更新發送到客戶端(服務器是在推數據),客戶端不是請求者,而是被動接收方;這種控制關系的反轉可以用來促進許多原本需要在遠程服務器上進行更復雜的請求和不斷的輪詢的通信請求;通過簡單地接收資源而不是直接發送請求,我們可以更新遠程代碼庫,輕松地分配資源,甚至將其集成到現有系統中來根據 API 的需要來更新端點和相關數據,唯一的缺點是初始建立困難。
2. 主要用途
更新客戶端,在資源新建或者更新時提供更新的、指定的數據。
3. 常見 Webhook 使用場景
對於第三方平台驗權、登陸等 沒有前端界面做中轉的場景,或者強安全要求的支付場景等,適合用 Webhook 做數據主動推送,說白了就是在前端無從參與,或者因為前端安全問題不適合參與時,就是 Webhook 的場景;很顯然 Webhook 也不是 Http 的替代品,不過的確是一種新的前后端交互方式。
如果客戶端要長期監聽某個任務的狀態,按照正常的 API 調用的方式去做,那么必須不停得輪訓服務器來獲取當前狀態;使用 Webhook 則無需輪訓,通過 API 可以確定是否發生了更改,如果更改了只需要等待服務器推送信息過來,然后客戶端更新就可以;git webhook其實也是這方面的應用。
4. 使用說明
Webhook 通過請求發送數據到你的應用后,就不再關注這些數據;也就是說如果你的應用存在問題,數據會丟失,許多 Webhook 會處理回應,如果程序出現錯誤會重傳數據;如果你的應用處理這個請求並且依然返回一個錯誤,你的應用就會收到重復數據。
Webhook 可能會發出大量的請求,這樣會造成你的應用阻塞,確保你的應用能處理這些請求。
轉發地址:https://tojohnonly.github.io/138-%E4%BB%80%E4%B9%88%E6%98%AFWebhook%EF%BC%9F.html