pythonjsonpython-requests

Difference between data and json parameters in Python Requests package


What is the difference between the data and json parameters in the Python Requests package?

It is unclear from the documentation.

Does this code:

import requests
import json
d = {'a': 1}
response = requests.post(url, data=json.dumps(d))

( note that we convert the dict to JSON here ☝️ ! )

... do anything different than:

import requests
import json
d = {'a': 1}
response = requests.post(url, json=d)

If so, what?

Does the latter automatically set the Content-Type HTTP header to application/json?


Solution

  • To answer my own question, it appears my two examples above do the same thing and that using the json parameter does indeed set the content-type in the headers to application/json. In my first example above using the data parameter, the content-type in the headers would need to be set manually.