私は「API API」を構築していますが、これは基本的に社内でREST Webサービスが多くのリクエストを行うWebサービスのラッパーです。 postではなくGETになりますが、パラメータを渡します。
辞書をクエリ文字列にエンコードする「ベストプラクティス」の方法はありますか?例:?foo=bar&bla=blah
私は rllib2 docs を見ていますが、paramsを渡すかどうかに基づいてPOSTまたはGETを使用するかどうかを自分で決定するようですが、多分誰かがparams辞書をGETリクエストに変換する方法を知っています。
たぶん、このようなパッケージがありますか? WebサーバーがREST=サービスから常に要求を行うため、キープアライブをサポートしていれば素晴らしいことです。
理想的には、XMLを何らかの種類の通過可能なpythonオブジェクトに変換するものでもあります。
ありがとう!
はい、urllib
/urllib2
分業はPython 2.x.
rllib.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 を確認することもできます-最終的にurllibを強制終了します:)
_import urllib
data = {}
data["val1"] = "VALUE1"
data["val2"] = "VALUE2"
data["val3"] = "VALUE3"
url_values = urllib.urlencode(data)
url = "https://www.python.org"
print url + "?" + url_values
_
_url_values
_はエンコードされた値であり、クエリstring(url+"?"+url_values)
としてurlとともにサーバーに投稿するために使用できます。