Difference between data and json parameters in python requests package

user1507844 picture user1507844 · Nov 1, 2014 · Viewed 14.2k times · Source

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 in the header to application/json?

Answer

user1507844 picture user1507844 · Nov 1, 2014

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.