事实证明,request.data
如果请求的内容类型是 Flask 设置为空字符串application/x-www-form-urlencoded
。由于我使用的是 JSON 正文请求,我只想解析 json 或强制 Flask 解析它并返回request.json
.
这是必需的,因为更改 AJAX 内容类型会强制执行 HTTP OPTION 请求,这会使后端复杂化。
如何让 Flask 返回请求对象中的原始数据?
request.form.keys()[0]
您可以通过if content type is获取帖子数据application/x-www-form-urlencoded
。
request.form
是一个multidict,其键包含已解析的帖子数据。
用于request.get_data()
获取 POST 数据。这与数据是否具有内容类型application/x-www-form-urlencoded
或application/octet-stream
.
如果您想在请求为 'Content-Type': 'application/x-www-form-urlencoded' 时获取 JSON,则需要“强制”转换为 json,如下面的代码:
from flask import Flask, request
import os
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)
试试这个:
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)