TIL

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

POSTリクエストでデータを送信 - requests

POSTとdata

Pythonのrequestsモジュールを使用したPOSTリクエスト送信時にデータも一緒に送信したい場合がある

postメソッドの引数の

  • data
  • json

のどちらかに送信したいデータのdictを渡す

dataに渡したdictはリクエスト送信時に自動的にエンコードされる。また、ヘッダーのContent-Type が application/x-www-form-urlencoded の時は URL エンコードして送ったほうがいいらしい(dataにdictをそのまま渡す)

curl option 覚え書き - Qiita

>>> import requests
>>> payload = {"key1": "value1", "key2": "value2"}
>>> r = requests.post("http://example", data=payload)
>>> r = requests.post("http://example", json=payload)

jsonとdataの使い分けがよくわからない
単純にjsonかそうでないかの違い?

もし、エンコードしていないデータを送りたい場合(dictではなく、stringで送信)**

json#dumps()したものをdataに渡す

>>> import json
>>> import requests
>>> url = 'https://api.github.com/some/endpoint'
>>> payload = {'some': 'data'}
>>> r = requests.post(url, data=json.dumps(payload))

参考文献

クイックスタート - requests-docs-ja 1.0.4 documentation