如何用Python的requests模块向Express服务器POST JSON数据?
问题解决:Python POST JSON到Express服务器接收为空
核心原因
你的Python脚本用data=data发送的是**表单编码(application/x-www-form-urlencoded)的数据,而Express服务器通过express.json()中间件只解析JSON格式(application/json)**的请求体,所以服务器无法识别,导致req.body为空。
修复步骤
1. 修改Python脚本
把data=data替换为json=data,requests会自动将数据序列化为JSON,并设置正确的Content-Type请求头:
import requests data = {'test':'Hello World!'} response = requests.post("XXXXX.herokuapp.com/", json=data)
2. 修复服务器代码的语法问题
服务器里的错误响应代码存在写法错误,JSON.parse不能用来格式化字符串,直接构造JSON对象即可:
app.post('/', function(req, res) { fs.writeFile('./get.json', JSON.stringify(req.body), err => { if (err) { res.json({status: false, err: err.message}); } else { res.json({status: true}); }; }); });
验证
修改后重启服务器,运行Python脚本,再发送GET请求就能收到{"test":"Hello World!"}了。
内容的提问来源于stack exchange,提问作者luucc_ss
相关产品推荐
相关产品推荐

