Flask request.args vs request.form

我的理解是, request.args在瓶包含从编码到URL参数GET请求,而request.form包含POST数据。 我很难掌握的是为什么发送POST请求时,试图通过request.form访问数据会返回一个400错误,但是当我尝试使用request.args访问它时,它似乎工作正常。

我试着用Postmancurl发送请求,结果是一样的。

curl -X POST -d {"name":"Joe"} http://127.0.0.1:8080/testpoint --header "Content-Type:application/json"

码:

@app.route('/testpoint', methods = ['POST'])
def testpoint():
    name = request.args.get('name', '')
    return jsonify(name = name)

您正在POST POST JSON, request.argsrequest.form都不起作用。

仅当您使用正确的内容类型发布数据时, request.form才有效; 表单数据可以使用application/x-www-form-urlencodedmultipart/form-data编码进行发布。

当你使用application/json ,你不再发布表单数据。 使用request.get_json()来访问JSON POST数据:

@app.route('/testpoint', methods = ['POST'])
def testpoint():
    name = request.get_json().get('name', '')
    return jsonify(name = name)

curl中的json数据是错误的,所以Flask不解析要形成的数据。

像这样发送数据: '{"name":"Joe"}'

curl -X POST -d '{"name":"Joe"}' http://example.com:8080/testpoint --header "Content-Type:application/json"
链接地址: http://www.djcxy.com/p/22149.html

上一篇: Flask request.args vs request.form

下一篇: encode POST data?