TIL

Today I Leaned. 仕事で知ったことや、つまづいたことを時間のある時にメモしておく

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

POSTとdata

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

postメソッドの引数の

  • data
  • json

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

dataに渡したdictはリクエスト送信時に自動的にエンコードされる

>>> 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