我有一个发出以下 GET 请求的客户端 api:
"GET /tasks/5fe7eabd-842e-40d2-849e-409655e0891d?{%22task%22:%22hello%22,%22url%22:%22/tasks/5fe7eabd-842e-40d2-849e-409655e0891d%22}&_=1411772296171 HTTP/1.1" 200 -
Doing
task = request.args
print task
显示它是
ImmutableMultiDict([('{"task":"hello","url":"/tasks/5fe7eabd-842e-40d2-849e-409655e0891d"}', u''), ('_', u'1411772296171')])
要获得“任务”值,如果我这样做:
request.args.getlist('task')
I get []
代替hello
。关于如何从中挖掘出 hello 有什么想法吗?
Ignore request.args
这里;这里没有表单编码的查询参数。
Use request.query_string http://werkzeug.pocoo.org/docs/0.9/wrappers/#werkzeug.wrappers.BaseRequest.query_string相反,分割缓存断路器(&_=<random number>
),解码 URL 引用并将结果提供给json.loads()
:
from urllib.parse import unquote
from flask import json
data = json.loads(unquote(request.query_string.partition('&')[0]))
task = data.get('task')
Demo:
>>> request.query_string
'{%22task%22:%22hello%22,%22url%22:%22/tasks/5fe7eabd-842e-40d2-849e-409655e0891d%22}&_=1411772296171'
>>> from urllib.parse import unquote
>>> from flask import json
>>> unquote(request.query_string.partition('&')[0])
'{"task":"hello","url":"/tasks/5fe7eabd-842e-40d2-849e-409655e0891d"}'
>>> json.loads(unquote(request.query_string.partition('&')[0]))
{u'url': u'/tasks/5fe7eabd-842e-40d2-849e-409655e0891d', u'task': u'hello'}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)