使用Flask接收POST请求并将请求内容写入TXT文件
Flask接收POST请求并写入TXT文件的实现方案
你看到的405错误是因为默认的Flask路由只支持GET请求,先给路由加上methods=['POST']来允许POST方法。下面分几种常见的POST数据传递场景,给出完整的实现代码:
1. 提取URL查询参数(对应你日志里的/?c51d94c2efccaa2092ad1028285549)
如果请求把数据放在URL的查询参数里,可以用request.args来获取:
from flask import Flask, request import datetime app = Flask(__name__) @app.route('/', methods=['POST']) def receive_post(): # 获取单个查询参数(替换成你实际的参数名) param_value = request.args.get('c51d94c2efccaa2092ad1028285549') # 或者获取所有查询参数转成字典 all_params = request.args.to_dict() # 写入TXT文件(追加模式,避免覆盖旧数据) with open('received_data.txt', 'a', encoding='utf-8') as f: f.write(f"[{datetime.datetime.now()}] URL参数: {all_params}\n") return '数据已接收', 200 if __name__ == '__main__': app.run(host='0.0.0.0', port=5000)
2. 提取表单格式的POST数据
如果发送方用表单(application/x-www-form-urlencoded)格式传数据:
from flask import Flask, request import datetime app = Flask(__name__) @app.route('/', methods=['POST']) def receive_post(): # 获取单个表单字段 target_field = request.form.get('your_field_name') # 获取所有表单字段 all_form_data = request.form.to_dict() # 写入TXT with open('received_data.txt', 'a', encoding='utf-8') as f: f.write(f"[{datetime.datetime.now()}] 表单数据: {all_form_data}\n") return '数据已接收', 200
3. 提取JSON格式的POST数据(脚本间通信优先推荐)
如果发送方用JSON格式(application/json)传数据,这是脚本间通信最规范的方式:
from flask import Flask, request import datetime app = Flask(__name__) @app.route('/', methods=['POST']) def receive_post(): # 获取JSON数据,返回字典格式 json_data = request.get_json() if not json_data: return '未检测到有效JSON数据', 400 # 写入TXT with open('received_data.txt', 'a', encoding='utf-8') as f: f.write(f"[{datetime.datetime.now()}] JSON数据: {json_data}\n") return '数据已接收', 200 if __name__ == '__main__': # 生产环境建议用gunicorn/uwsgi部署,这里用自带服务器方便测试 app.run(host='0.0.0.0', port=5000)
关键注意事项
- 用
'a'模式打开文件是追加写入,若要每次覆盖旧数据可改用'w'模式 - 24小时稳定运行的话,不要用Flask自带的
app.run(),生产环境推荐用gunicorn部署,比如命令:gunicorn -w 4 -b 0.0.0.0:5000 app:app - 导入
datetime是为了记录数据接收时间,便于后续排查问题
内容的提问来源于stack exchange,提问作者Sean Ward
相关产品推荐
相关产品推荐

