Home >> Blog >> 什麼是 Webhook?

什麼是 Webhook?

Webhook 是一個越來越流行的 API 概念。隨著越來越多的我們在網絡上所做的事情可以通過事件來描述,例如SEO流程中常遇到的captcha解謎問題,webhook 變得更加適用。它們非常有用,並且是實現事件反應的資源輕量級方式。

那麼,究竟什麼是

webhook? Webhook(也稱為 Web 回調或 HTTP 推送 API)是應用程式向其他應用程式提供實時資訊的一種方式。Webhook 在發生數據時將數據傳送到其他應用程式,這意味著您可以立即獲取數據。與典型的 API 不同,您需要非常頻繁地輪詢數據才能實時獲取數據。這使得 webhook 對於提供者和消費者來說都更加高效。webhook 的唯一缺點是最初設置它們的困難。

Webhook 有時被稱為“反向 API”,因為它們為您提供了相當於 API 規範的內容,您必須設計一個 API 供 Webhook 使用。webhook 將向您的應用程式發出 HTTP 請求(通常是 POST),然後您將負責解釋它。

使用 Webhook

使用 webhook 的第一步是為 webhook 提供者提供一個 URL 來傳遞請求。這通常通過後端面板或 API 完成。這意味著您還需要在您的應用程式中設置一個可從公共網絡訪問的 URL。

大多數 webhook 將通過以下兩種方式之一向您發布數據:作為 JSON(通常)或 XML(blech)進行解釋,或作為表單數據(application/x-www-form-urlencoded 或 multipart/form-data )。您的提供者會告訴您他們如何提供服務(或者甚至讓您在這件事上做出選擇)。這兩者都相當容易解釋,並且大多數 Web 框架都會為您完成工作。如果他們不這樣做,您可能需要調用一兩個函數。

調試 Webhook

有時調試 webhook 可能很複雜,因為 webhook 主要是異步的。因此,您必須觸發它們並等待,然後檢查響應。這可能很煩人並且效率很低。幸運的是有更好的方法!我們在 Debugging Webhooks 的文檔頁面中瀏覽了其中的許多,但是,它相當於以下內容:

  1. 通過使用像RequestBin這樣的工具來收集 webhook 的請求,了解 webhook 提供了什麼。
  2. 使用 cURL 或Postman等工具模擬請求。
  3. 使用ngrok 之類的工具在您的機器上測試程式碼。
  4. 使用Runscope 之類的工具觀察整個流程。

保護 Webhook

由於 webhook 將數據傳遞到您應用中的公開可用 URL,因此其他人可能會找到該 URL,然後向您提供虛假數據。為了防止這種情況發生,您可以採用多種技術。最簡單的事情(以及在繼續之前應該實施的事情)是強制 TLS 連接 (https)。一旦你實現了這一點,你可以繼續並進一步保護你的連接:

  1. 保護 webhook 的第一種也是最受支持的方法是向 URL 添加令牌,作為唯一標識,例如?auth=TK
  2. 下一個選項是實現Basic Auth,這也得到了廣泛的支持,而且很容易做到。
  3. 前兩種解決方案可以很好地防止大多數攻擊,但是它們的缺點是在請求中發送身份驗證令牌。第三種選擇是讓提供商簽署它向您發出的每個請求,然後驗證簽名。這樣做的缺點是要求提供者已經實現了請求籤名——這意味著如果他們還沒有實現,你可能就不走運了。

重要的陷阱

創建 webhook 消費者時需要記住以下幾點:

  • Webhook 將數據傳遞到您的應用程式,並且在發出請求後可能會停止關注。這意味著如果您的應用程式出現錯誤,您的數據可能會丟失。如果您的應用程式出錯,許多 webhook會關注響應並重新發送請求。如果您的應用程式處理了請求並仍然發送錯誤,則您的應用程式中可能存在重複數據。了解您的 Webhook 提供商如何處理響應,以便您為可能出現的應用程式錯誤做好準備。此外,您可能需要查看我們的工具Reflector.io以幫助處理 webhook 錯誤和排隊。
  • Webhook 可以發出很多請求。如果您的提供商有很多事件要告訴您,他們最終可能會對您的應用進行 DDoSing。確保您的應用程式可以處理您的 webhook 的預期規模。我們製作了另一個工具Loader.io來幫助解決這個問題。

開始動手執行

真正理解 webhook 的最好方法是嘗試一次。幸運的是,許多服務都使用 webhook,因此您可以輕鬆地使用它們來滿足您的需求。查看下面的一些 webhook:

  • SendGrid – 我們提供事件數據,甚至通過我們的 webhook 解析電子郵件。
  • wilio – Twilio使用 webhook發送和響應電話和短信。
  • Github – Github通過 webhook更新應用程式關於存儲庫和對其採取的操作。
  • Foursquare –當用戶使用 webhook 簽入時,Foursquare會通知應用程式。

有關 SendGrid 的 API 的更多資訊,請Email來信詢問!