15

事实证明,request.data如果请求的内容类型是 Flask 设置为空字符串application/x-www-form-urlencoded。由于我使用的是 JSON 正文请求,我只想解析 json 或强制 Flask 解析它并返回request.json.

这是必需的,因为更改 AJAX 内容类型会强制执行 HTTP OPTION 请求,这会使后端复杂化。

如何让 Flask 返回请求对象中的原始数据?

4

4 回答 4

13

request.form.keys()[0]您可以通过if content type is获取帖子数据application/x-www-form-urlencoded

request.form是一个multidict,其键包含已解析的帖子数据。

于 2013-07-14T15:29:57.303 回答
10

用于request.get_data()获取 POST 数据。这与数据是否具有内容类型application/x-www-form-urlencodedapplication/octet-stream.

于 2017-09-01T15:44:47.373 回答
4

如果您想在请求为 '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)
于 2017-03-09T14:51:53.290 回答
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)
于 2019-12-06T09:16:31.027 回答