python - 无论 Content-Type header 如何,在 Python Flask 中获取原始 POST 正文

标签 python flask werkzeug

之前我问过How to get data received in Flask request因为 request.data 是空的。答案解释说 request.data 是原始帖子正文,但如果解析表单数据,则将为空。如何无条件获取原始帖子正文?

@app.route('/', methods=['POST'])
def parse_request():
    data = request.data  # empty in some cases
    # always need raw data here, not parsed form data

最佳答案

使用 request.get_data()获取原始数据,无论内容类型如何。数据被缓存,后续可以随意访问request.datarequest.jsonrequest.form

如果你先访问request.data,它会先调用get_data,并带参数解析表单数据。如果请求具有表单内容类型(multipart/form-dataapplication/x-www-form-urlencodedapplication/x-url-encoded ) 那么原始数据将被消耗。 request.datarequest.json 在这种情况下会显示为空。

关于python - 无论 Content-Type header 如何,在 Python Flask 中获取原始 POST 正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10999990/

相关文章:

python - 对于 python 有没有办法从发生异常的上下文中打印变量范围?

python - numpy.ndenumerate 以 Fortran 顺序返回索引?

flask - flask 管理表单编辑规则导致“没有字段”错误

Python 3.x tkinter 自动完成

python - python 中的异步函数调用

python - Flask 蓝图和登录重定向问题

python - 如何在Flask路由(Werkzeug)中验证整数范围?

django - 在 WSGI/Passenger 下使用 Werkzeug 调试 Django - 问题

带有 celery 的 Python Flask 在应用程序上下文之外

python - Flask:获取模块中每个 View 类的 URL