我正在构建一个“API API”,它基本上是一个内部 REST Web 服务的包装器,Web 应用程序将向该服务发出大量请求。 一些 Web 服务调用需要是 GET 而不是 post,而是传递参数。
是否有“最佳实践”方法将字典编码为查询字符串?例如:?foo=bar&bla=blah
我正在查看 urllib2 docs ,并且看起来它会根据您是否传递参数自行决定使用 POST 还是 GET,但也许有人知道如何使其将 params 字典转换为 GET 请求。
也许外面有这样的包?如果它支持 keep-alive 那就太好了,因为 Web 服务器会不断地从 REST 服务请求东西。
理想情况下,也可以将 XML 转换为某种可遍历的 python 对象。
谢谢!
最佳答案
是 urllib.urlencode()还不够?
>>> import urllib
>>> urllib.urlencode({'foo': 'bar', 'bla': 'blah'})
foo=bar&bla=blah
编辑:
你也可以更新现有的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
函数在 Python 2.6 之前的 cgi
包中
2012 年 4 月 23 日编辑:
你也可以看看python-requests - 它最终应该会杀死 urllibs :)
关于Python 和 urllib2 : how to make a GET request with parameters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2814898/