How do I make a PATCH request in Python?
Asked Answered
A

4

22

Is there a way to make a request using the PATCH HTTP method in Python?

I tried using httplib, but it doesn't accept PATCH as method param.

Accustom answered 28/7, 2011 at 1:2 Comment(6)
Did you mean PUT? PUSH is not a valid request method for HTTPNisa
Check here, it uses PUT on that post, I guess you can use PUSH as a verb and wont give you trouble, still you should use PUT instead of PUSHAspa
Sorry, people, I typed the wrong method name, I edited the question o.OAccustom
Cat Plus Plus: yes, there is a PATCH method. dave: PUSH is "valid". There's a difference between "valid" and "registered".Doer
Cat Plus Plus: here about PATCH method innoq.com/blog/st/2010/03/rfc_5789_patch_method_for_http.html It's ironic that Google support and use it in APIs but GAE urlfetch doesn't work with it.Accustom
salesforce.com REST API requires use of the PATCH method for updating objects, so I am looking for this too, so I can update objects from Google App Engine salesforce.com/us/developer/docs/api_rest/index.htmMasera
O
25

With Requests, making PATCH requests is very simple:

import requests

r = requests.patch('http://httpbin.org/patch')
Offload answered 18/8, 2011 at 18:41 Comment(3)
How do I log r. Should I just do self.log.info('Response: %s' % r)?Immunize
how can i pass string json data into this ?Winner
@PrasaanthNeelakandan over here are better answers Post JSON using Python RequestsWaligore
C
16

Seems to work in 2.7.1 as well.

>>> import urllib2
>>> request = urllib2.Request('http://google.com')
>>> request.get_method = lambda: 'PATCH'
>>> resp = urllib2.urlopen(request)
Traceback (most recent call last):
 ...
urllib2.HTTPError: HTTP Error 405: Method Not Allowed
Convenance answered 26/1, 2012 at 18:7 Comment(1)
Great information. This is a simple little hack to make urllib2 use PATCH instead of POST. I don't know why PATCH hasn't been implemented as an option yet.Wingate
W
4

I tried this in Python 3, and it seemed to work (but I don't have a server handy that supports the PATCH request type):

>>> import http.client
>>> c = http.client.HTTPConnection("www.google.com")
>>> r = c.request("PATCH", "/index.html")
>>> print(r.status, r.reason)
405 Method Not Allowed

I'm assuming that the HTTP 405 is coming from the server and that it is "not allowed".

By the way, thanks for showing me the cool PATCH method in HTTP.

Weanling answered 11/8, 2011 at 18:54 Comment(1)
Thanks for the answer, I will try that later and mark as accepted. GitHub API accepted POST instead of PATCH, but I will give that a try and keep this for future.Accustom
D
2

It is incredibly simple with httplib2:

import httplib2

http = httplib2.Http()
http.request("http://www.google.com", "PATCH", <patch content>)

It supports Python 2.3 or later (including 3.x) and works beautifully!

Dudgeon answered 3/5, 2012 at 17:37 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.