获取 Flask 请求中接收的数据

2022-09-05 01:05:09

我希望能够将数据发送到我的 Flask 应用。我尝试过访问,但它是一个空字符串。如何访问请求数据?request.data

from flask import request

@app.route('/', methods=['GET', 'POST'])
def parse_request():
    data = request.data  # data is empty
    # need posted data here

这个问题的答案导致我问了在Python Flask中获取原始POST正文,而不考虑接下来的内容类型标头,这是关于获取原始数据而不是解析的数据。


答案 1

这些文档描述了请求期间对象 () 上可用的属性。在大多数情况下,它将为空,因为它被用作回退:requestfrom flask import requestrequest.data

request.data包含传入请求数据作为字符串,以防它附带 mimetype Flask 不处理。

  • request.args:URL 查询字符串中的键/值对
  • request.form:正文中的键/值对,来自 HTML 帖子表单或未经过 JSON 编码的 JavaScript 请求
  • request.files:正文中的文件,Flask 将其与 .必须使用 HTML 表单,否则将不会上传文件。formenctype=multipart/form-data
  • request.values: 组合和 ,如果键重叠,则首选argsformargs
  • request.json:解析的 JSON 数据。请求必须具有内容类型,或使用 request.get_json(force=True) 忽略内容类型。application/json

所有这些都是 MultiDict 实例(除了 )。您可以使用以下命令访问值:json

  • request.form['name']:如果您知道密钥存在,请使用索引
  • request.form.get('name'):如果密钥可能不存在,则使用get
  • request.form.getlist('name'):如果多次发送密钥并且您想要值列表,请使用。 仅返回第一个值。getlistget

答案 2

若要获取原始数据,请使用 request.data。这仅在无法解析为表单数据时才有效,否则它将为空,并且将具有解析的数据。request.form

from flask import request
request.data