码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 低成本实现webhook接收端[python]


    1. Webhook是个啥

    Webook本质上也是API,只不过是反向调用,即前端不主动发送请求,完全由后端推送。

    简单来说,Webhook是一个接受HTTP POST或是GET,PUT,DELETE的URL,一个实现了Webhook的API提供商就是在当事件发生的时候会向配置的URL发送信息,与请求-响应式不同,使用Webhook可以实时接收到变化。

    Ps:Webhook可能会发出大量的请求,确保接受的URL不被泄露或者应用能及时处理这些请求

    2. 以飞书事件举个例子

    1. 首先需要一个飞书自建机器人。
    2. 在事件订阅界面会让你配置请求地址(下面介绍如何获取低成本外网地址)

    在这里插入图片描述

    1. 配置事件添加。

    在这里插入图片描述

    1. 此时一个可以监控消息接受的机器人就配置完成了,而这个消息数据就来自Webhook的数据推送。

    3. 使用内网穿透获取URL

    1. 这里我使用natfrp内网穿透实现。

    2. 首先只要花费1元购买内网穿透永久使用权,就可以获得10M/s的内网穿透隧道。

    3. 创建一个新的隧道,实现HTTP(S)服务。

      1. 选择穿透->隧道列表->创建隧道

        在这里插入图片描述

      2. 普通用户选择国内普通节点就可以使用了,最好选择可以建站的节点。隧道类型选择TCP隧道。

      3. 随后的配置只需要填写本地端口(可以根据需求随机填写),HTTPS(也可以根据需求填写)

        在这里插入图片描述

    4. 本地启动SAKURA FRP,启用节点。

    5. 此时就可以将内网的172.0.0.1:8080推送到外网啦,有问题可以查看帮助文档(sakurafrp帮助文档)

    6. 外网网址例如http://www.example.com:12345

    4. 使用Python搭建Webhook接收端

    1. 通过Flask搭建API接收端,先来个基础的代码,web通过8080端口开放。
    import json
    from flask import Flask,request
    
    app = Flask(__name__)
    
    @app.route("/")
    def hello_world():
        return "

    Hello, World!

    "
    @app.route("/webhook/event",methods=['POST']) def event(): json_data = json.loads(request.data) return json_data if __name__ == '__main__': app.run(port = 8080)
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    1. 上面的代码"/"也就是http://www.example.com:12345/访问会显示Hello, World!而http://www.example.com:12345/webhook/event就是我们要配置的Webhook接收端。填到刚刚我们配置的URL中,就可以接收到数据啦。

    END

    5/webhook/event**就是我们要配置的Webhook接收端。填到刚刚我们配置的URL中,就可以接收到数据啦。

    END

    这样一个简易的webhook就这样搭建好啦。

  • 相关阅读:
    【Linux·克莱因计划】实用指令操作汇总合集(上)
    虚拟机无法访问宿主机oracle数据库
    离线数仓搭建_02_服务器配置与数据生产
    IK分词器详解
    BCS 2022大湾区网络安全峰会 | 美创CTO分享数据安全风险治理实践
    【EI复现】基于主从博弈的新型城镇配电系统产消者竞价策略【IEEE33节点】(Matlab代码实现)
    蓝桥杯:Python组参赛指南 国二选手经验贴 附蓝桥杯历年真题
    AST使用eval运行函数,更换数值
    为什么Vue组件中的data是一个函数
    vue实现el-tree操作后默认展开该节点和同级节点拖拽并进行前后端排序
  • 原文地址:https://blog.csdn.net/xiaokai1999/article/details/126819674
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号