Flask应用程序-查询参数从请求参数中删除

时间:2019-06-12 14:45:42

标签: bash curl httpie

我有一个简单的Flask应用程序(Flask版本1.0.3)和一个应用程序。 URL /ask和处理程序来处理(名称,值)对的POST查询字符串,但是request.args对象未存储所有参数对,仅存储了第一对。为什么其他人辍学?

我已经尝试打印出request.args对象,但是它只显示第一个参数对。

这是Flask应用

import json

from flask import (
    Flask,
    jsonify,
    request,
    Response
)


app = Flask(__name__)


@app.route('/')
def home():
    return jsonify(message="Hello, World!")


@app.route('/ask', methods=['POST'])
def ask():
    return str(request.args)


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True)

这是使用http CLI工具进行的简单查询,带有两个参数和响应参数-请注意,响应参数仅包含第一个参数

$ http POST http://127.0.0.1:5000/ask?q1=name&q2=address
[1] 58720
[2019-06-12 15:29:27 $ HTTP/1.0 200 OK
Content-Length: 36
Content-Type: text/html; charset=utf-8
Date: Wed, 12 Jun 2019 14:29:27 GMT
Server: Werkzeug/0.15.4 Python/3.6.2

ImmutableMultiDict([('q1', 'name')])

使用curl

可以得到相同的结果
curl -X POST http://127.0.0.1:5000/nest?q1=name&q2=address

有什么我想念的吗

1 个答案:

答案 0 :(得分:1)

在外壳程序中,“&”是关键字,必须加引号。在您的两个示例中,“&”之后的所有内容均作为第二个命令执行。将测试更改为:

http POST "http://127.0.0.1:5000/ask?q1=name&q2=address"