講技術-什麼是Web Hook?

(一、)什麼是Web Hook?

Webhook是一個API概念,並且變得越來越流行。我們能用事件描述的事物越多,webhook的作用範圍也就越大。Webhook作爲一個輕量的事件處理應用,正變得越來越有用。

簡單來說就是一種反向API機制,類似於觸發器的一樣.

場景模擬:

在傳統的web server設計中,我們項目A想要獲取項目B的數據,通常項目B需要提供一個API,然後項目A去請求項目B的API,從而獲得數據,這樣的過程我們稱之爲"拉"數據。

==通過webhook機制,對客戶端-服務端的模式進行了逆轉。==

繼續回到場景中:

新增了一個需求,項目A需要實時獲取到項目B的最新數據,在傳統做法中,我們需要不停的去向項目B做輪詢操作,以便獲取到最新數據,這樣的效率和性能都非常低下,通過webhook機制來設計

傳統做法:項目A需要不停輪詢去拉取項目B的最新數據

項目A   -> 項目B

webhook機制:項目A提供一個webhook url,每次項目B創建新數據時,便會向項目A的hook地址進行請求,項目A收到項目B的請求,然後對數據進行處理

項目B   -> 項目A

用一張圖來說明,這個流程.
image

(二、)如何使用webhook?

使用webhook就需要爲對應的服務端設計一個hook url,用於接收服務端的請求。

例如:

http://www.abcd.com/api/video/hook

通常webhook請求過來的數據格式爲xml和json兩種,在現代Web應用中,都能很好的解析和對這兩種數據進行交互.

(三、)主要應用場景

都常應用於異步編程中,如:高安全的支付、微信登錄(OAuth)、資源同步、資源創建與更新、耗時較長。

場景A:
你需要向視頻處理服務器上傳一個視頻、你需要獲得視頻處理後的結果,然而視頻處理服務器上視頻很多,在排隊進行處理,你不能立刻獲取到視頻的處理結果,此時你可以設計一個hook url,當視頻處理完成後,視頻處理服務器自動向你的hook url發送請求,告訴你視頻已經處理完畢.

(四、)安全問題

由於webhook會向公網上的hook url發送數據,這就意味着某些不好心的人可能會找到這個url,從而進行發送錯誤的數據,但是我們可以通過以下一些技術手段來解決這個問題:

  • 增加token機制
  • 增加auth認證
  • 只接收對應服務端domain或IP請求
  • 數據簽名

(五、)需要注意的問題

當我們使用web hook機制需要特別注意的問題

  1. 當服務提供者通過web hook將數據發送你的服務端後,就不會再去關注這些數據。假設你的服務端此時出現了崩潰,或者無法請求成功等原因,就需要主動去嘗試請求數據。
  2. webhook會發出大量的請求,可能會造成你的應用阻塞,在此需要確保你的應用能夠處理好這些請求。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章