Flask中获取POST请求Body失败问题求助
问题描述
我是Flask新手,编写了如下Flask代码:
from flask import Flask from flask import request app = Flask(__name__) @app.route('/') def home(): return 'Hello, World!' @app.route('/test/<email>', methods = ['GET', 'POST'], strict_slashes=False) def test(email): if request.method == 'GET': print("USERS_EMAIL: ", email) return 'GET REQUEST', 202 if request.method == 'POST': print("USERS_EMAIL: ", email) body = request.json['email_subject'] print("BODY: ", body) return '', 201 return 'ERROR', 400
需要从React前端发送JSON对象并在Flask中接收,但用Postman发送如下JSON Body时始终报错:
请求Body:
{ "email_subject": "Postman test", "title": "Lysenko Ilya Igorevich" }
尝试过以下几种方式获取数据均失败:
body = request.json['body']body = request.get_json()body = request.json['email_subject']
解决建议
- 检查请求头设置:确保Postman中请求的
Content-Type已设置为application/json。Flask仅在请求头正确标识JSON类型时,才会自动解析请求体为JSON格式,否则request.json会返回None,直接取键会触发报错。 - 添加异常处理逻辑:修改代码增加对JSON解析结果的校验,避免空值或缺失字段导致的错误:
if request.method == 'POST': print("USERS_EMAIL: ", email) json_data = request.get_json() # 校验是否成功解析JSON if not json_data: return '无效的JSON格式', 400 # 安全获取字段,避免KeyError body = json_data.get('email_subject') if not body: return '缺少email_subject字段', 400 print("BODY: ", body) return '', 201 - 确认请求路径与方法:确保Postman使用POST方法,且请求路径正确包含
<email>参数(例如/test/test@example.com),无拼写错误。 - 调试请求详情:在代码中打印请求头和原始数据,排查问题:
print("请求头:", request.headers) print("原始请求体:", request.get_data())
通过这些信息可以确认请求是否正确到达后端,以及请求体格式是否符合预期。
内容的提问来源于stack exchange,提问作者yem
相关产品推荐
相关产品推荐

