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會發出大量的請求,這樣會造成你的應用阻塞。確保你的應用能處理這些請求。
英文翻譯,原文地址:https://sendgrid.com/blog/webhook-vs-api-whats-difference/
SmartWebHook v0.2 釋出了。SmartWebHook是一個基於 Golang 開發的用於迅速搭建並使用 WebHook 進行自動化部署和運維繫統,支援:Github / GitLab / GitOsc / Gogs。介面和開發思路參考於 git-webhook ,在原作者的基礎上解耦了WebHook和Server之間關係,實現了多對多關係。因與伺服器通訊使用的是SSH方式,請注意保管伺服器賬號和密碼。同時支援 C/S 模式,配合客戶端可以實現不用SSH也可以遠端執行命令。
當使用 C/S 模式時,server 的賬號和密碼是伺服器端跟 Client 第一次通訊時的認證資訊,伺服器端將通過 http://remote url/token 地址換取連線 WebSocket 的金鑰,該金鑰會作為 x-smarthook-token 請求頭髮送到客戶端進行認證連線。
更新內容:
修復 在Nginx代理 HTTS 模式下回撥地址生成錯誤的BUG #2。
修復 未登入是訪問個人中心錯誤的BUG
新增 日誌頁面自動更新功能。
新增 配置監聽指定IP的功能
介面預覽
快速搭建Hexo部落格+webhook自動部署+全站HTTPS | https://www.gaoshilei.com/2017/10/30/hexo-init/
GitHub - NetEaseGame/git-webhook: 使用 Python Flask + SQLAchemy + Celery + Redis + React 開發的用於迅速搭建並使用 WebHook 進行自動化部署和運維,支援 Github / GitLab / Gogs / GitOsc。
https://github.com/NetEaseGame/git-webhook
Minho/go-git-webhook: Golang 實現的自動化部署和運維工具,支援:Github / GitLab / GitOsc。 https://gitee.com/longfei6671/go-git-webhook
相關文章
- Git Webhook自動部署專案GitWebHook
- VS Code部署Teams webhook到Azure FunctionsWebHookFunction
- Gitlab倉庫管理系統-高可用部署Gitlab
- Win10 部署 Confluence 文件管理系統Win10
- CRM系統本地部署和雲部署的優缺點
- GO 使用Webhook 實現github 自動化部署GoWebHookGithub
- 成華區ztzy管理系統程式碼部署 linuxLinux
- 教程|雲幫手部署Windows公有云管理系統Windows
- 教程|雲幫手部署Linux公有云管理系統Linux
- Ubuntu 系統下部署nginx 和 php 7.2UbuntuNginxPHP
- beego 使用 coding 的 webhook 2.0 進行自動部署GoWebHook
- 利用 webhook 實現 Git 自動部署 Laravel 程式碼WebHookGitLaravel
- 分享ZKEYS公有云管理系統一鍵部署操作流程
- CRM系統雲部署和本地部署的優缺點有哪些
- 解析linux包管理和系統更新Linux
- 連鎖店管理系統開發原始碼搭建部署原始碼
- 教程|ZKEYS公有云業務管理系統(國際版)部署
- Linux下部署開源版“禪道”專案管理系統Linux專案管理
- Linux 網路通訊管理和系統服務管理Linux
- 雲盤助力,快速部署,你的專屬知識管理系統
- 部署型CRM系統和託管型CRM系統的優缺點有哪些
- 用 Go 做了一個 Git WebHook 鉤子 實現自動部署GoGitWebHook
- Linux系統管理-系統概述Linux
- 駕校管理系統設計和實現
- 高效管理客戶關係:十款本地部署CRM系統推薦
- 部署STONE-CRM中小企業的客戶關係管理系統
- 基於Docker和Kubernetes構建的部署管理和叢集管理Docker
- Linux Centos系統 磁碟分割槽和檔案系統管理 (深入理解)LinuxCentOS
- Linux系統中部署memcachedLinux
- java版工程專案管理系統原始碼+系統管理+系統設定+專案管理Java專案管理原始碼
- 能耗管理系統,能源管理系統的意義
- 系統管理體系——軟體包管理
- linux系統管理Linux
- 地府管理系統
- 招聘管理系統
- Gms管理系統
- CMS管理系統
- 多系統管理混亂?SAP系統整合其他系統實現統一管理