Flask - 当内容类型为“application / x-www-form-urlencoded”时,如何在POST请求中读取原始主体

时间:2013-07-14 15:15:43

标签: python ajax post flask

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

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

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

4 个答案:

答案 0 :(得分:8)

如果内容类型为request.form.keys()[0],您可以通过application/x-www-form-urlencoded获取发布数据。

request.formmultidict,其键包含已解析的帖子数据。

答案 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)