Webhook是一個API概念,簡單來說就是一種反向API機制,類似于觸發器的一樣,
近幾年Webhook在前后端對接的開發模式中變得越來越流行,我們能用事件描述的事物越多,Webhook的作用范圍也就越大,Webhook作為一個輕量的事件處理應用,正變得越來越實用,
下面我們來模擬場景:
在傳統的web server設計中,專案A想要獲取專案B的資料,通常專案B需要提供一個API,然后專案A去請求專案B的API,從而獲得資料,
接下來新增了一個需求,專案A需要實時獲取到專案B的最新資料,
在傳統做法中,我們需要不停的去向專案B做輪詢操作,以便獲取到最新資料,這樣的效率非常低,但是如果通過Webhook機制來設計的話,則可以變手動為自動,
傳統做法:專案A需要不停輪詢去拉取專案B的最新資料,即專案A -> 專案B
使用Webhook:專案A提供一個webhook url,每次專案B創建新資料時,便會向專案A的hook地址進行請求,專案A收到專案B的請求,然后對資料進行處理,即專案B -> 專案A
用一張圖來說明,這個流程

如何使用Webhook?
使用webhook就需要為對應的服務端撰寫hook腳本,再設計一個hook url,用于接收服務端的請求,

通常webhook請求過來的資料格式為xml和json兩種,在現代Web應用中,都能很好的決議和對這兩種資料進行互動,
主要應用場景
都常應用于異步編程中,如:高安全的支付、微信登錄(OAuth)、資源同步、資源創建與更新等,
場景:
你需要上傳一個視頻,獲得視頻處理后的結果,但是要上傳的視頻很多,在排隊進行處理,沒法立刻獲取到視頻的處理結果,此時你可以設計一個hook url,當視頻處理完成后服務器自動向你的hook url發送通知,告訴你視頻已經處理完畢,
安全問題
由于webhook會向公網上的hook url發送資料,這就意味著某些不好心的人可能會找到這個url,從而進行發送錯誤的資料,但是我們可以通過以下一些技術手段來解決這個問題:
? 增加token機制
? 增加auth認證
? 只接收對應服務端domain或IP請求
? 資料簽名
需要注意的問題
當我們使用web hook需要特別注意的問題
- 當服務提供者通過web hook將資料發送你的服務端后,就不會再去關注這些資料,假設你的服務端此時出現了崩潰,或者無法請求成功等情況,就需要主動去嘗試請求資料,
- webhook會發出大量的請求,可能會造成你的應用阻塞,在此需要確保你的應用能夠處理好這些請求,
工具推薦
這里推薦的工具是Eolinker,webhook功能支持對接市面上絕大部分系統和工具,服務支持的效率也挺高的,用起來挺舒服的,
使用地址:www.eolinker.com
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/264097.html
標籤:其他
上一篇:軟體測驗工程師所需要掌握的技能
