我正在尝试使用 Python bottle 应用程序制作一个简单的 REST api。我在从请求全局对象中检索 GET 变量时遇到问题。任何建议如何从 GET 请求中检索它?
4 回答
它们存储在request.query
对象中。
http://bottlepy.org/docs/dev/tutorial.html#query-variables
看起来您也可以通过将request.query
属性视为字典来访问它们:
request.query['city']
因此dict(request.query)
将创建一个包含所有查询参数的字典。
正如@mklauber 所指出的,这不适用于多字节字符。看起来最好的方法是:
my_dict = request.query.decode()
或者:
dict(request.query.decode())
有一个dict
而不是一个<bottle.FormsDict object at 0x000000000391B...>
对象。
如果你想要它们:
from urllib.parse import parse_qs
dict = parse_qs(request.query_string)
如果你想要一个:
one = request.GET.get('one', '').strip()
你能试试这个吗:
对于这个例子:http://localhost:8080/command?param_name=param_value
在您的代码中:
param_value = request.query.param_name
从文档
name = request.cookies.name
# is a shortcut for:
name = request.cookies.getunicode('name') # encoding='utf-8' (default)
# which basically does this:
try:
name = request.cookies.get('name', '').decode('utf-8')
except UnicodeError:
name = u''
所以你可能更喜欢使用属性访问器 (request.query.variable_name) 而不是 request.query.get('variable_name')
另一点是您可以使用 request.params.variable_name,它适用于 GET 和 POST 方法,而不是根据 GET/POST 切换 request.query.variable_name 或 request.forms.variable_name。