TIL

Today I Learned. 知ったこと、学んだことを書いていく

GETリクエストのパラメータの空白はそのままでいい requests - Python

requests.get()でGETリクエストを送信するときのパラメータに空白が入るときはどうすればいいのかわからなかったが、そのまま渡していいことがわかった

import requests

params = {'aaa': '111 あああ',
          'bbb': '222 いいい'}

res = requests.get('http://google.com', params=params)

リクエストされるURLは'http://google.com/?aaa=111+%E3%81%82%E3%81%82%E3%81%82&bbb=222+%E3%81%84%E3%81%84%E3%81%84'となる


requestsのソースを追っていったらなんかわかった気がするからメモしておく

パラメータがエンコードされるまでのスタックトレース(下から上に呼び出している)

urlencode() urllib.parse.py:906
_encode_params() models.py:105
prepare_url() [PreparedRequest] models.py:423
prepare() [PreparedRequest] models.py:305
prepare_request() [Session] sessions.py:437
request() [Session] sessions.py:494
request() api.py:58
get() api.py:72

urllib.parse.urlencode()が最終的に呼ばれていたため、' 'が'+'になっているということ!!あまり気にしなくても良かったのかも...

参考文献

github.com