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

Flask POST JSON接口数据接收异常及返回报错问题求助

Flask JSON API 数据接收与返回问题解决

问题分析

  • 接口未接收到提交数据:原代码使用request.data获取原始字节流,未正确解析JSON格式的请求体;
  • 返回处理报错:直接对原始字节数据使用jsonify导致格式不匹配,本质是请求数据获取方式错误引发后续异常。

修正后的Flask API代码

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/post', methods=['POST'])  # 仅保留POST方法,符合数据提交场景
def post():
    # 用get_json()自动解析JSON请求体,自动校验Content-Type
    payload = request.get_json()
    if not payload:
        return jsonify({"error": "未接收到JSON数据"}), 400
    
    # 可在此添加后续JSON验证逻辑
    print("接收到的数据:", payload)
    
    # jsonify自动设置响应头为application/json,确保客户端正确解析
    return jsonify({"状态": "成功", "接收的数据": payload})

if __name__ == '__main__':
    app.run(debug=True)

修正后的调用代码

import requests

url = "http://localhost:5000/post"
text = {"filename": "my_file.csv"}

# 使用json参数时,requests自动设置Content-Type为application/json,无需手动添加
response = requests.post(url, json=text)

if response.status_code == 200:
    print("CSV文件验证通过")
    print("响应数据:", response.json())
else:
    print("CSV文件验证失败")
    print("错误信息:", response.json())

关键说明

  • 请求数据获取:request.get_json()是Flask处理JSON请求的标准方式,会自动检查请求头Content-Type并将请求体解析为Python字典;
  • 响应返回规范:jsonify()负责将Python对象序列化为JSON字符串,同时设置正确的响应头,避免客户端解析报错;
  • 调用端优化:requests.post的json参数会自动处理Content-Type设置,无需手动配置,减少头信息冲突风险。

内容的提问来源于stack exchange,提问作者K_python2022

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 00:42:16