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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 15:45:39