我正在构建一个“API API”,它基本上是内部 REST Web 服务的包装器,Web 应用程序将向该服务发出大量请求。
一些Web服务调用需要是GET而不是POST,而是传递参数。
是否有一种“最佳实践”方法将字典编码为查询字符串?例如。:?foo=bar&bla=blah
我正在看urllib2 文档 http://docs.python.org/library/urllib2.html,看起来它会根据是否传递参数自行决定使用 POST 还是 GET,但也许有人知道如何使其将 params 字典转换为 GET 请求。
也许那里有类似这样的东西的包?如果它支持 keep-alive 那就太好了,因为 Web 服务器会不断地从 REST 服务请求东西。
理想情况下,它还可以将 XML 转换为某种可遍历的 Python 对象。
Thanks!
Is urllib.urlencode() http://docs.python.org/library/urllib.html#urllib.urlencode不够?
>>> import urllib
>>> urllib.urlencode({'foo': 'bar', 'bla': 'blah'})
foo=bar&bla=blah
EDIT:
您还可以更新现有的 url:
>>> import urlparse, urlencode
>>> url_dict = urlparse.parse_qs('a=b&c=d')
>>> url_dict
{'a': ['b'], 'c': ['d']}
>>> url_dict['a'].append('x')
>>> url_dict
{'a': ['b', 'x'], 'c': ['d']}
>>> urllib.urlencode(url_dict, True)
'a=b&a=x&c=d'
注意parse_qs
函数位于cgi
Python 2.6 之前的包
编辑 2012 年 4 月 23 日:
您还可以看看python 请求 http://docs.python-requests.org/en/latest/user/quickstart/#passing-parameters-in-urls- 它最终应该杀死 urllibs :)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)