我想能够获得数据发送到我的Flask应用程序。我已经尝试访问请求。数据,但它是一个空字符串。如何访问请求数据?

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体,而不管接下来的Content-Type头,这是关于获取原始数据而不是解析数据。


当前回答

我只是面对同样的需求。我必须保存信息以备不时之需。所以,我使用下面的公式:

Info = "%s/%s/%s" % (request.remote_addr, repr(request), repr(session))

Repr (request)将给出基本信息的字符串表示。你可以添加用户代理数据: request.headers.get(“用户代理”)

我还保存会话大陆,因为它可能包含有价值的信息

其他回答

要解析JSON,使用request.get_json()。

@app.route("/something", methods=["POST"])
def do_something():
    result = handle(request.get_json())
    return jsonify(data=result)

对于URL查询参数,使用request.args。

search = request.args.get("search")
page = request.args.get("page")

对于发布的表单输入,使用request.form。

email = request.form.get('email')
password = request.form.get('password')

对于内容类型为application/ JSON的JSON,使用request.get_json()。

data = request.get_json()

在JavaScript中使用jQuery发布JSON,请使用JSON。Stringify来转储数据,并将内容类型设置为application/json。

var value_data = [1, 2, 3, 4];

$.ajax({
    type: 'POST',
    url: '/process',
    data: JSON.stringify(value_data),
    contentType: 'application/json',
    success: function (response_data) {
        alert("success");
    }   
});

在Flask中使用request.get_json()解析它。

data = request.get_json()

要获得原始数据,请使用request.data。这只在它不能被解析为表单数据的情况下才有效,否则它将是空的和请求的。表单将有解析过的数据。

from flask import request
request.data
request.data

这很好用,但请记住,它是作为字符串传入的,需要遍历。