2012年1月30日月曜日

furlを使ってみた

ブログを久しく書いていないので、ライブラリの覚書を少しずつ書くことにする。

最近少し話題になったfurlについて使い方を簡単に書いておく。

インストールはいつものように
easy_install furl
pip install furl
でできる。

使ってみたログを書いてみる
>>> from furl import furl
>>> url = furl("http://pypi.python.org/pypi?%3Aaction=search&term=test&submit=search")
>>> url.host
'pypi.python.org'
>>> url.port
80
>>> url.query
Query('term=test&%3Aaction=search&submit=search')
>>> url.query.params
{'term': 'test', ':action': 'search', 'submit': 'search'}
>>> url.args
{'term': 'test', ':action': 'search', 'submit': 'search'}
cgi.parse_qsとかよりは結構使いやすい気がするが一点気になることが・・・
>>> url = furl("http://pypi.python.org/pypi?%3Aaction=search&term=test&submit=search&term=test2")
>>> url.args
{'term': 'test', ':action': 'search', 'submit': 'search'}
>>> url.query.params
{'term': 'test', ':action': 'search', 'submit': 'search'}
リクエストパラメータに同じキーのものが複数入っていた場合、
どちらか一方しかargsに入らない。

HTTPの仕様では同じキーに別の値を入れることができて、
サーバ側では配列で受け取れるようになっているのだとばっかり。

そのようなリクエストは、このままでは正しくparseできない。(やり方発見できず)
簡単に使えるし、良い感じなだけに惜しいなー。