如何使用 Python 处理 POST 请求?
How can I handle a POST request using Python?
我正在尝试设置一个可以侦听和处理 POST 请求的小型 Python 3.8 脚本。我想收听来自 Trello 的 POST,然后只记录数据。我阅读的每个视频或指南都在展示如何处理来自 HTML 表单的 POST 请求。
Trello 示例:
{
"action": {
"id":"51f9424bcd6e040f3c002412",
"idMemberCreator":"4fc78a59a885233f4b349bd9",
"data": {
"board": {
"name":"Trello Development",
"id":"4d5ea62fd76aa1136000000c"
},
"card": {
"idShort":1458,
"name":"Webhooks",
"id":"51a79e72dbb7e23c7c003778"
},
"voted":true
},
"type":"voteOnCard",
"date":"2013-07-31T16:58:51.949Z",
"memberCreator": {
"id":"4fc78a59a885233f4b349bd9",
"avatarHash":"2da34d23b5f1ac1a20e2a01157bfa9fe",
"fullName":"Doug Patti",
"initials":"DP",
"username":"doug"
}
},
"model": {
"id":"4d5ea62fd76aa1136000000c",
"name":"Trello Development",
"desc":"Trello board used by the Trello team to track work on Trello. How meta!\n\nThe development of the Trello API is being tracked at https://trello.com/api\n\nThe development of Trello Mobile applications is being tracked at https://trello.com/mobile",
"closed":false,
"idOrganization":"4e1452614e4b8698470000e0",
"pinned":true,
"url":"https://trello.com/b/nC8QJJoZ/trello-development",
"prefs": {
"permissionLevel":"public",
"voting":"public",
"comments":"public",
"invitations":"members",
"selfJoin":false,
"cardCovers":true,
"canBePublic":false,
"canBeOrg":false,
"canBePrivate":false,
"canInvite":true
},
"labelNames": {
"yellow":"Infrastructure",
"red":"Bug",
"purple":"Repro'd",
"orange":"Feature",
"green":"Mobile",
"blue":"Verified"
}
}
}
我会考虑使用像 Flask 这样的轻量级 Web 应用程序框架。使用 Flask,您可以在 Python 中创建一个简单的服务器端脚本来侦听 POST
请求并处理数据。
示例:
首先,安装 Flask:pip install flask
.
然后,这是一个示例脚本:
from flask import Flask, request
app = Flask(__name__)
@app.route('/', methods=['POST'])
def result():
print(request.data) # raw data
print(request.json) # json (if content-type of application/json is sent with the request)
print(request.get_json(force=True)) # json (if content-type of application/json is not sent)
Flask 包含一个开发服务器,但要 运行 它在生产中,您应该参考 Flask Deployment Options。
如果你想收听 POST 请求,那么你需要某种网络服务器
您可以通过 flask、django 或任何其他框架工作使用 python 获取网络服务器
另一种选择是使用 python 库 "http.server"
https://github.com/hacker1221/python3-server
这里我制作了简单的 Python 3 HTTP 服务器用于记录所有 GET 和 POST 请求
我正在尝试设置一个可以侦听和处理 POST 请求的小型 Python 3.8 脚本。我想收听来自 Trello 的 POST,然后只记录数据。我阅读的每个视频或指南都在展示如何处理来自 HTML 表单的 POST 请求。
Trello 示例:
{
"action": {
"id":"51f9424bcd6e040f3c002412",
"idMemberCreator":"4fc78a59a885233f4b349bd9",
"data": {
"board": {
"name":"Trello Development",
"id":"4d5ea62fd76aa1136000000c"
},
"card": {
"idShort":1458,
"name":"Webhooks",
"id":"51a79e72dbb7e23c7c003778"
},
"voted":true
},
"type":"voteOnCard",
"date":"2013-07-31T16:58:51.949Z",
"memberCreator": {
"id":"4fc78a59a885233f4b349bd9",
"avatarHash":"2da34d23b5f1ac1a20e2a01157bfa9fe",
"fullName":"Doug Patti",
"initials":"DP",
"username":"doug"
}
},
"model": {
"id":"4d5ea62fd76aa1136000000c",
"name":"Trello Development",
"desc":"Trello board used by the Trello team to track work on Trello. How meta!\n\nThe development of the Trello API is being tracked at https://trello.com/api\n\nThe development of Trello Mobile applications is being tracked at https://trello.com/mobile",
"closed":false,
"idOrganization":"4e1452614e4b8698470000e0",
"pinned":true,
"url":"https://trello.com/b/nC8QJJoZ/trello-development",
"prefs": {
"permissionLevel":"public",
"voting":"public",
"comments":"public",
"invitations":"members",
"selfJoin":false,
"cardCovers":true,
"canBePublic":false,
"canBeOrg":false,
"canBePrivate":false,
"canInvite":true
},
"labelNames": {
"yellow":"Infrastructure",
"red":"Bug",
"purple":"Repro'd",
"orange":"Feature",
"green":"Mobile",
"blue":"Verified"
}
}
}
我会考虑使用像 Flask 这样的轻量级 Web 应用程序框架。使用 Flask,您可以在 Python 中创建一个简单的服务器端脚本来侦听 POST
请求并处理数据。
示例:
首先,安装 Flask:pip install flask
.
然后,这是一个示例脚本:
from flask import Flask, request
app = Flask(__name__)
@app.route('/', methods=['POST'])
def result():
print(request.data) # raw data
print(request.json) # json (if content-type of application/json is sent with the request)
print(request.get_json(force=True)) # json (if content-type of application/json is not sent)
Flask 包含一个开发服务器,但要 运行 它在生产中,您应该参考 Flask Deployment Options。
如果你想收听 POST 请求,那么你需要某种网络服务器
您可以通过 flask、django 或任何其他框架工作使用 python 获取网络服务器 另一种选择是使用 python 库 "http.server"
https://github.com/hacker1221/python3-server
这里我制作了简单的 Python 3 HTTP 服务器用于记录所有 GET 和 POST 请求