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
相关产品推荐
相关产品推荐

