我有一个客户端api,它发出以下GET请求:
"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 -
在做
task = request.args
print task
Run Code Online (Sandbox Code Playgroud)
显示它是
ImmutableMultiDict([('{"task":"hello","url":"/tasks/5fe7eabd-842e-40d2-849e-409655e0891d"}', u''), ('_', u'1411772296171')])
要获取“任务”值,请执行以下操作:
request.args.getlist('task')
Run Code Online (Sandbox Code Playgroud)
我得到[]
代替hello
。关于如何从中打招呼的任何想法?
忽略request.args
这里;您这里没有表单编码的查询参数。
request.query_string
改为使用,拆分缓存破坏&_=<random number>
符(),解码URL引用并将结果提供给json.loads()
:
from urllib import unquote
from flask import json
data = json.loads(unquote(request.query_string.partition('&')[0]))
task = data.get('task')
Run Code Online (Sandbox Code Playgroud)
演示:
>>> request.query_string
'{%22task%22:%22hello%22,%22url%22:%22/tasks/5fe7eabd-842e-40d2-849e-409655e0891d%22}&_=1411772296171'
>>> from urllib 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'}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5087 次 |
最近记录: |