?k=1&k=2 能拿到几个??k 和 ?k= 一样吗?转换失败会怎样?参数多到什么程度会被拒?这篇把查询字符串的各种边界都跑一遍。
?k=1&k=2&k=3 → {'args': {'k': ['1', '2', '3']}, 'first': '1', 'getlist': ['1', '2', '3'], 'raw': 'k=1&k=2&k=3'}
类型: ImmutableMultiDict | 修改会怎样: TypeError: 'ImmutableMultiDict' objects are immutable上一篇:Werkzeug Request 对象;下一篇:Form Data 与 JSON Body。
?k= → {'k': ['']}
?k → {'k': ['']}
?k=&k=1 → {'k': ['', '1']}
?&&k=1&& → {'k': ['1']}
?=v → {'': ['v']}
?a=1&a → {'a': ['1', '']}
?k=a%26b → {'k': ['a&b']}
?k=a+b → {'k': ['a b']}
?k=%E4%B8%AD → {'k': ['中']}
?k=1;j=2 → {'k': ['1;j=2']}
?k[]=1&k[]=2 → {'k[]': ['1', '2']}
?k=a=b → {'k': ['a=b']} get("n", type=int) → 12
get("bad", type=int) → None
get("bad", 0, type=int) → 0
get("neg", type=int) → -3
get("f", type=float) → 1.5
get("empty", type=int) → None
get("missing") → None
get("missing", "x") → 'x'
a["n"] → '12'
a["missing"] → BadRequestKeyError (KeyError 的子类,默认变成 400): BadRequest
视图里直接 request.args["must"] 缺失 → 400test client 发 5000 个查询参数 → 200 | 解析出 5000 个 gunicorn 默认:100 个参数(查询串 589 字节)→ 200 '100' gunicorn 默认:1000 个参数(查询串 6889 字节)→ 400 '<html>\n <head>\n <title>Bad Request</' gunicorn 默认:1500 个参数(查询串 10889 字节)→ 400 '<html>\n <head>\n <title>Bad Request</' gunicorn 默认的请求行上限 limit_request_line = 4094 字节(超过返回 4xx)
args: {'k': 'from_args'} | form: {'k': 'from_form', 'only_form': '1'} | values: {'k': ['from_args', 'from_form'], 'only_form': ['1']}