flask后端接收POST数据的三种格式探究

准备工作

构建一个flask后端路由

@cross_origin()
@app.route('/release',methods=['GET','POST'])
def release():
    print('here in')
    if request.method == 'POST':
        print('post')
        d0 = request.values
        d1 = request.form
        d2 = request.args
        d3 = request.get_json()
        print(type(d3))

        print(d0)
        print(d1)
        print(d2)
        print(d3)
    else:
        print('get')

    return '111'

先不加证明地给出结论
request.values = requst.args + request.form

一、用requests模块发送post请求

import requests

def tt():
    post_data={
    	"title":"hahaha",
    	"content":"pass"
    }
    res=requests.post(url="http://localhost:5000/release",data=post_data)
    print(res.text)
    return 
    
if __name__=='__main__':
    tt()

可以看到结果
​​在这里插入图片描述

request.form有值,
request.args为空。
.values中对应.form的部分有值。
.get_json()返回None

二、用postman将参数挂在url中传递

在这里插入图片描述

结果是.form为空,.args有值。
.values中对应.args的部分有值。
.get_json()返回None
在这里插入图片描述

三、使用axios传递参数

在js文件中构造方法

axios({
    method: 'post',
    url: 'http://localhost:5000/release',
    data: {
        firstName: 'Fred',
        lastName: 'Flintstone'
    }
}).then(function (response) {
    console.log(response)
}).catch(function (error) {
    console.log(error)
})

可以看到结果
d0,d1,d2都为空。即request.value, .form, .args都为空。
在这里插入图片描述

但d3=request.get_json()的结果不为空,成功解析出一个json格式的 <class ‘dict’>。
这是因为

axios的默认请求头类型为
Content-Type: application/json
即发送json格式数据。

但这项默认设置是可以修改的。(修改方法自行查找)

如果修改为
Content-Type: application/x-www-form-urlencoded
就能在request.form中读出来了。

总结

request.values = requst.args + request.form

根据传参方法的不同,需要后端开发人员自行选择正确的方式读取参数。(萌新后端玩家弄不清楚会卡很久)
由于自行分辨form和args很麻烦,大部分情况下推荐采用整合了两者的.values,
传入键名即可获得对应的值。

request.values.get(‘title’)

但值得注意的是,request.values 没有__iter__属性,即是一个不可遍历类型。
所以不能用 for k in request.values这种写法。

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
小程序后端发送POST请求到Flask后端的搭建过程如下: 首先,我们需要在Flask中定义一个URL路由来处理来自小程序的POST请求。在Flask应用程序的主文件中,可以使用`@app.route`装饰器来定义路由,例如: ``` @app.route('/api/data', methods=['POST']) def handle_post_request(): # 在这里处理来自小程序的POST请求 # 获取请求数据 data = request.get_json() # 假设数据以JSON格式传输 # 处理数据 # 返回响应 return jsonify({'message': 'POST请求已处理'}) ``` 接下来,我们需要在小程序中发送POST请求到Flask后端。可以使用小程序的`wx.request`方法来发送POST请求,例如: ```javascript wx.request({ url: 'https://your-flask-backend.com/api/data', // Flask后端的URL method: 'POST', data: { // 将要发送的数据 key1: value1, key2: value2 }, header: { 'content-type': 'application/json' // 设置请求数据类型为JSON }, success: function(res) { console.log(res.data) // 成功接收Flask后端的响应数据 }, fail: function(res) { console.log(res) // POST请求失败 } }) ``` 需要注意的是,确保小程序和Flask后端的域名和端口配置正确,防止跨域访问问题。 最后,Flask后端接收到来自小程序的POST请求后,可以使用`request.get_json()`方法来获取请求的JSON数据,并对数据进行处理,然后返回一个响应给小程序。 这就是小程序发送POST请求到Flask后端的搭建过程。这样,小程序就可以和Flask后端进行数据交互了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值