不管Content-Type标头如何,都可以在Python Flask中获取原始POST正文


问题内容

之前,我问过如何获取Flask请求中的数据,因为它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-urlencoded,或application/x-url- encoded),则原始数据将被消耗。request.data并且request.json在这种情况下将显示为空。