我想能够获得数据发送到我的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头,这是关于获取原始数据而不是解析数据。
对于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()
得到请求。form作为普通字典,使用request.form.to_dict(flat=False)。
要为API返回JSON数据,请将其传递给jsonify。
这个示例将表单数据作为JSON数据返回。
@app.route('/form_to_json', methods=['POST'])
def form_to_json():
data = request.form.to_dict(flat=False)
return jsonify(data)
下面是一个使用curl的POST表单数据的例子,返回为JSON:
$ curl http://127.0.0.1:5000/data -d "name=ivanleoncz&role=Software Developer"
{
"name": "ivanleoncz",
"role": "Software Developer"
}
在编写一个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"])