Flask接收微信小程序POST数据的两种实现方案
本文介绍在Flask后端接收微信小程序前端POST请求时,处理JavaScript Object类型数据的两种常见方法。由于直接传递Object会导致后端接收为字符串'[object Object]',文中分别演示了通过util.js将对象序列化为Form表单格式,以及直接使用JSON.stringify转换为JSON字符串的方案,并提供了对应的Flask后端获取与解析代码。
Flask中获取小程序Request数据的两种方法
在后端开发中,前端传递的数据类型往往是一个容易忽视的难点。例如,JavaScript中的Object类型无法直接通过POST请求完整传输到Flask后端。如果直接传递,后端接收到的值通常只是字符串'[object Object]',这在Flask中仅被视为一个普通的字符串对象,而非预期的数据结构。
针对这一问题,我们需要寻找有效的数据转换与传输方案:
方案一:通过GET或POST参数传递,将JavaScript Object转换为字符串格式的请求数据:
1. 在util.js工具文件中定义一个JS函数:
function json2Form(json) {
var str = [];
for (var p in json) {
str.push(encodeURIComponent(p) + "=" + encodeURIComponent(json[p]));
}
return str.join("&");
}
module.exports = {
json2Form: json2Form,
}
2. 在相应的页面加载该工具函数,并在发起请求时进行调用:
var Util = require('../../../utils/util.js')
wx.request({
url: App.Config.post_Data,//自己的服务接口地址
method: 'POST',
header: {
'content-type': 'application/x-www-form-urlencoded'
},
data: { postdata:Util.json2Form(params)},//注意这里哈!
success: function (data) {console.log('已经提交数据到数据库')}
})
此外,这里也可以直接使用 URL 拼接 Util.json2Form(params) 的方式,并通过GET请求发送数据。
3. Flask后端获取数据:
postdata = request.values.get('postdata')方案二:通过POST参数传递,将Object转换为JSON格式:
1. 小程序端直接将请求数据转换为JSON字符串格式:
wx.request({
url: App.Config.post_Data,
method: 'POST',
header: {
'content-type': 'application/x-www-form-urlencoded'
},
data: { postdata: JSON.stringify(params) },//注意这里哈!
success: function (data) {console.log('已经提交数据到数据库')}
})
2. Flask后端处理接收到的数据:
postdata = request.values.get('postdata')
print (json.loads(postdata)) # 注意这里哈
postdata=json.loads(postdata)# 注意这里哈,变回DICT格式,亲切ing
总结来说,在后续开发中,建议优先使用POST请求配合JSON格式来获取数据,以继续推进Flask小程序的开发进程。
感谢阅读,希望以上内容能对大家有所帮助,谢谢各位对本站的支持!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









