我想能够获得数据发送到我的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(“用户代理”)

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

其他回答

在编写一个Slack机器人时,它应该发送JSON数据,我得到了一个有效载荷,其中内容类型是application/x-www-form-urlencoded。

我尝试了request.get_json(),它没有工作。

@app.route('/process_data', methods=['POST'])
def process_data():
   req_data = request.get_json(force=True)

相反,我使用request。form获取包含JSON的表单数据字段,然后加载它。

from flask import json

@ app.route('/slack/request_handler', methods=['POST'])
def request_handler():
   req_data = json.loads(request.form["payload"])
@app.route('/addData', methods=['POST'])
def add_data():
     data_in = mongo.db.Data
     id = request.values.get("id")
     name = request.values.get("name")
     newuser = {'id' : id, 'name' : name}
     if voter.find({'id' : id, 'name' : name}).count() > 0:
            return "Data Exists"
     else:
            data_in.insert(newuser)
            return "Data Added"

试试- >

from flask import request

@app.route('/', methods=['GET', 'POST'])
def parse_request():
    if request.method == 'POST':
       data = request.form.get('data')

无论内容类型如何,使用request.get_data()获取原始的文章正文。如果你使用request。data,它调用request.get_data(parse_form_data=True),它将填充请求。form MultiDict并保留数据为空。

如果你用内容类型application/ JSON发布JSON,使用request.get_json()在Flask中获取它。如果内容类型不正确,则返回None。如果数据不是JSON,则会引发错误。

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