漫谈webhook
来自维基百科针对
webhook
的描述: 网页开发中的网络钩子是一种通过自定义回调函数来增加或更改网页表现的方法。这些回调可被可能与原始网站或应用相关的第三方用户及开发者保存、修改与管理。术语“网络钩子”由杰夫·林德塞于2007年通过给计算机编程术语“钩子”加上前缀得来。
有什么场景
阐述
提到webhook
这块,就算是没有用过,在工作中多多少少也会有听到这个词,比较常见的场景就是钉钉机器人,jenkins
和gitlab
或github
实现远程触发更新操作的场景,另外一个比较明显的例子就是如果大家用prometheus
做监控的话,使用alertmanager
做告警的话,就需要一个配套的webhook
作为消息接收者。
具体的实践场景
•事件监听触发•使用钉钉机器人实现监控告警•实时更新通知•使用Jenkins的插件实现代码更新变更触发部署•消息接收分发•告警消息接收然后根据body内容进行过滤分发操作
来个简单的例子
这里使用flask来实现
代码语言:javascript复制# -- coding:UTF-8 --
from flask import Flask, request
app = Flask(__name__)
@app.route('/callback', methods=['POST'])
def callback():
if request.method == 'POST':
return request.get_data()
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8888, debug=True)
postman测试效果
相关站点
文章中贴图来源[1]
webhooks[2]
后记
凡事不要慌,静下心来去理顺下思路,你会发现问题你压根都解决不了,所以也就没有慌的必要了~
引用链接
[1]
文章中贴图来源: https://www.socketlabs.com/blog/what-is-a-webhook/
[2]
webhooks: https://pypi.org/project/webhooks/