You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask框架中如何获取POST请求传入的数据?

Flask框架中如何获取POST请求传入的数据?

嘿,我看了你遇到的问题啦,其实是你用错了获取请求数据的方式~ 我来给你分两种常见情况说清楚怎么改:

情况1:你当前用的表单格式传参(requests.post的data参数)

你现在用requests.post(url, data={"id":"good"})发送请求时,默认会把数据以x-www-form-urlencoded(表单编码)的格式发送到后端。这种情况下,Flask里不能用request.data来取数据,得用request.form对象:

修改你的create_task函数试试:

@app.route('/task/create',methods=["post"])
def create_task():
    # 获取表单格式的参数,用get方法可以避免key不存在时报错
    task_id = request.form.get("id")
    print(f"拿到的id是:{task_id}")
    # 也可以直接返回结构化响应
    return jsonify({"status": "success", "received_id": task_id})

这样你再运行测试代码,就能正常拿到id的值啦!

情况2:如果想传JSON格式的参数(更适合API场景)

如果你的接口是给前端/其他服务传JSON数据用的,推荐用JSON格式传参,处理起来更规范。你需要同时修改测试代码和Flask接口:

先改测试的请求代码:

import requests
url = 'http://localhost:5000/task/create'
# 用json参数替代data,requests会自动把数据转成JSON并设置正确的请求头
r = requests.post(url, json={"id":"good"})
print(r.text)

再改Flask的create_task函数:

@app.route('/task/create',methods=["post"])
def create_task():
    # 解析JSON格式的请求体,get_json()会自动识别application/json请求头
    request_data = request.get_json()
    # 可以先判断是否拿到了有效数据
    if not request_data:
        return jsonify({"error": "未收到有效JSON数据"}), 400
    task_id = request_data.get("id")
    print(f"拿到的id是:{task_id}")
    return jsonify({"status": "success", "received_id": task_id})

这样就能正常获取JSON格式的请求数据了。

补充说明几个对象的区别

  • request.data:一般用来获取非表单格式的原始请求体(比如自定义编码的字符串、二进制数据),你当前的请求是表单格式,所以它会返回空的b''。
  • request.form:专门用来处理x-www-form-urlencoded或multipart/form-data格式的表单参数。
  • request.get_json():用来解析application/json格式的请求体,返回解析后的Python字典,比直接用request.json更稳妥(可以处理异常情况)。

你可以根据自己的实际业务场景选其中一种方式来修改代码~

备注:内容来源于stack exchange,提问作者user2155362

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 15:43:08