实现一个Webhook接收端和一个简单的API端点
Webhook 示例
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/webhook', methods=['POST'])
def webhook():
# 获取请求中的JSON数据
data = request.json
# 打印接收到的数据
print(f"Received webhook data: {data}")
# 返回响应
return jsonify({"status": "success", "message": "Webhook received successfully"}), 200
if __name__ == '__main__':
app.run(port=5000)
API 示例
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/api/data', methods=['GET'])
def api_data():
# 定义简单的API数据
data = {
"id": 1,
"name": "Sample Data",
"description": "This is a sample API response."
}
# 返回JSON响应
return jsonify(data), 200
if __name__ == '__main__':
app.run(port=5001)
对比
-
触发机制:
- Webhook : 被动触发。当某个事件发生时,外部服务会主动向Webhook URL发送请求。在上面的例子中,
/webhook路由会在接收到POST请求时处理数据。 - API : 主动请求。客户端需要通过HTTP请求来获取数据。在API示例中,
/api/data路由需要客户端发送GET请求来获取数据。
- Webhook : 被动触发。当某个事件发生时,外部服务会主动向Webhook URL发送请求。在上面的例子中,
-
数据流向:
- Webhook : 数据从第三方服务流向我们自己的应用。在Webhook示例中,我们假设某个服务向我们的
/webhook端点发送数据。 - API : 数据从我们的应用流向客户端。在API示例中,客户端请求我们的
/api/data端点来获取数据。
- Webhook : 数据从第三方服务流向我们自己的应用。在Webhook示例中,我们假设某个服务向我们的
-
使用场景:
- Webhook: 适用于需要实时响应某些事件的场景,如支付通知、GitHub事件等。
- API: 适用于客户端主动请求数据或服务的场景,如获取用户信息、查询数据库等。
如何运行
-
确保安装Flask,可以通过以下命令安装:
pip install Flask -
将Webhook和API示例分别保存为两个Python文件(如
webhook_example.py和api_example.py)。 -
启动两个示例,分别监听不同的端口(如5000和5001),然后可以使用工具如Postman测试API和Webhook的功能。