Webhook是一個API概念,而且變得愈來愈流行。咱們能用事件描述的事物越多,webhook的做用範圍也就越大。Webhook做爲一個輕量的事件處理應用,正變得愈來愈有用。
簡單來講就是一種反向API機制,相似於觸發器的同樣.web
場景模擬:編程
在傳統的web server設計中,咱們項目A想要獲取項目B的數據,一般項目B須要提供一個API,而後項目A去請求項目B的API,從而得到數據,這樣的過程咱們稱之爲"拉"數據。json
==經過webhook機制,對客戶端-服務端的模式進行了逆轉。==api
繼續回到場景中:安全
新增了一個需求,項目A須要實時獲取到項目B的最新數據,在傳統作法中,咱們須要不停的去向項目B作輪詢操做,以便獲取到最新數據,這樣的效率和性能都很是低下,經過webhook機制來設計服務器
傳統作法:項目A須要不停輪詢去拉取項目B的最新數據微信
項目A -> 項目B
webhook機制:項目A提供一個webhook url,每次項目B建立新數據時,便會向項目A的hook地址進行請求,項目A收到項目B的請求,而後對數據進行處理dom
項目B -> 項目A
用一張圖來講明,這個流程.
異步
使用webhook就須要爲對應的服務端設計一個hook url,用於接收服務端的請求。ide
例如:
http://www.abcd.com/api/video/hook
一般webhook請求過來的數據格式爲xml和json兩種,在現代Web應用中,都能很好的解析和對這兩種數據進行交互.
都常應用於異步編程中,如:高安全的支付、微信登陸(OAuth)、資源同步、資源建立與更新、耗時較長。
場景A:
你須要向視頻處理服務器上傳一個視頻、你須要得到視頻處理後的結果,然而視頻處理服務器上視頻不少,在排隊進行處理,你不能馬上獲取到視頻的處理結果,此時你能夠設計一個hook url,當視頻處理完成後,視頻處理服務器自動向你的hook url發送請求,告訴你視頻已經處理完畢.
因爲webhook會向公網上的hook url發送數據,這就意味着某些很差心的人可能會找到這個url,從而進行發送錯誤的數據,可是咱們能夠經過如下一些技術手段來解決這個問題:
當咱們使用web hook機制須要特別注意的問題