如果请求的内容类型为request.data
,则Flask将application/x-www-form-urlencoded
设置为空字符串。由于我正在使用JSON正文请求,我只想解析json或强制Flask解析它并返回request.json
。
这是必需的,因为更改AJAX内容类型会强制HTTP OPTION请求,这会使后端变得复杂。
如何让Flask返回请求对象中的原始数据?
答案 0 :(得分:8)
如果内容类型为request.form.keys()[0]
,您可以通过application/x-www-form-urlencoded
获取发布数据。
request.form
是multidict,其键包含已解析的帖子数据。
答案 1 :(得分:7)
使用request.get_data()
获取POST数据。这与数据的内容类型application/x-www-form-urlencoded
还是application/octet-stream
无关。
答案 2 :(得分:4)
如果你想在请求是'Content-Type'时获得JSON:'application / x-www-form-urlencoded'你需要“强制”转换为json,如下面的代码所示:
from flask import Flask, request
app = Flask(__name__)
@app.route("/my-endpoint", methods = ['POST'])
def myEndpoint():
requestJson = request.get_json(force=True)
//TODO: do something....
return requestJson
if __name__ == "__main__":
port = int(os.environ.get('PORT', 5000))
app.run(host='0.0.0.0', port=port, debug=True, use_reloader=True)
答案 3 :(得分:0)
尝试:
f = request.form
output = []
user_data = {}
user_data['email'] = f['email']
user_data['password'] = f['password']
user_data['key'] = f['key']
output.append(user_data)