joshwh
joshwh

Reputation: 31

Format python PATCH request from curl command

I have a curl command I can run from my local machine that works, but transferring it to a python script is giving me difficulties. Here's the curl command that works:

curl -X PATCH "http://localhost:9999/pins/1" -H "Content-Type: application/json" -d "{"state": "on"}"

And here is what I have so far as a python request:

import requests

url = 'http://localhost:9999/pins/1'
payload = {'state':'on'}
head = {'Content-Type':'application/json'}

r = requests.patch(url, payload, headers=head)

But I am receiving a 400 response. Any direction?

Also, if I format it as

r = requests.patch(url, data=payload)

I get a 500 response code. Also should be noted: I can run a simple get request easily by running something like

r = requests.get(url)

Upvotes: 2

Views: 1969

Answers (2)

bigbounty
bigbounty

Reputation: 17368

import requests

url = 'http://localhost:9999/pins/1'
payload = {'state':'on'}
head = {'Content-Type':'application/json'}

r = requests.patch(url, json=payload)

change this r = requests.patch(url, data=payload) to r = requests.patch(url, json=payload)

Upvotes: 3

Daniel Ocando
Daniel Ocando

Reputation: 3774

Try the following to make sure that your payload is valid json.

import requests
import json

url = 'http://localhost:9999/pins/1'
payload = {'state':'on'}
head = {'Content-Type':'application/json'}

r = requests.patch(url, data=json.dumps(payload), headers=head)

Upvotes: 0

Related Questions