天天看點

什麼是webhook

一、概述

webhook是一個api概念,并且變得越來越流行。我們能用事件描述的事物越多,

webhook的作用範圍也就越大。webhook作為一個輕量的事件處理應用,正變得越來越有用。

準确的說webhoo是一種web回調或者http的push api,是向app或者其他應用提供實時資訊的一種方式。webhook在資料産生時立即發送資料,也就是你能實時收到資料。這一種不同于典型的api,需要用了實時性需要足夠快的輪詢。這無論是對生産還是對消費者都是高效的,唯一的缺點是初始建立困難。

webhook有時也被稱為反向api,因為他提供了api規則,你需要設計要使用的api。webhook将向你的應用發起http請求,典型的是post請求,應用程式由請求驅動。

二、使用webhook

消費一個webhook是為webhook準備一個url,用于webhook發送請求。

這些通常由背景頁面和或者api完成。這就意味你的應用要設定一個通過公網可以通路的url。

多數webhook以兩種資料格式釋出資料:json或者xml,這需要解釋。另一種資料格式是application/x-www-form-urlencoded or multipart/form-data。這兩種方式都很容易解析,并且多數的web應用架構都可以做這部分工作。

三、webhook調試

調試webhook有時很複雜,因為webhook原則來說是異步的。你首先要解發他,然後等待,接着檢查是否有響應。這是枯燥并且相當低效。幸運的是還有其他方法:

1、明白webhook能提供什麼,使用如requestbin之類的工具收集webhook的請求;

2、用curl或者postman來模拟請求;

3、用ngrok這樣的工具測試你的代碼;

4、用runscope工具來檢視整個流程。

四、webhook安全

因為webhook發送資料到應用上公開的url,這就給其他人找到這個url并且發送錯誤資料的機會。你可采用技術手段,防止這樣的事情發生。最簡單的方法是采用https(tls connection)。除了使用https外,還可以采用以下的方法進一步提高安全性:

1、首先增加token,這個大多數webhook都支援;

2、增加認證;

3、資料簽名。

五、重要的問題

當作為webhook的消費者時有兩件事需要銘記于心:

1、webhook通過請求發送資料到你的應用後,就不再關注這些資料。也就是說如果你的應用存在問題,資料會丢失。許多webhook會處理回應,如果程式出現錯誤會重傳資料。如果你的應用處理這個請求并且依然傳回一個錯誤,你的應用就會收到重複資料。

2、webhook會發出大量的請求,這樣會造成你的應用阻塞。確定你的應用能處理這些請求。