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

标签 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

我有什么遗漏吗

最佳答案

在 shell 中“&”是关键字,必须用引号引起来。在两个示例中,“&”之后的所有内容都作为第二个命令执行。将您的测试更改为:

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

关于bash - Flask 应用程序 - 查询参数从请求参数中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56564922/

相关文章:

java - Spring OAuth2 : InsufficientAuthenticationException

python - 如何将 httpie 与 httpie-aws-authv4 捆绑到 Python zipapp 中?

linux - Bash 脚本遍历 PID 并杀死项目

linux - 防止空格成为for循环bash/shell中的定界符

php - 通过许多 url 在源代码中查找字符串的代码

ssl - 如何在 HTTPie 中使用 CA(如 curl 的 --cacert)

linux - 使用 Python 在一种语法中使用多个引号

Linux/Bash,使用 ps -o 按特定名称获取进程?

c++ - 编译 Curl Visual Studio - 未解析的外部符号