Как сделать запрос PATCH в Python? - PullRequest
18 голосов
/ 28 июля 2011

Есть ли способ сделать запрос, используя HTTP-метод PATCH в Python?

Я пытался использовать httplib, но он не принимает PATCH в качестве параметра метода.

Ответы [ 4 ]

22 голосов
/ 18 августа 2011

С Запросами , выполнение запросов PATCH очень просто:

import requests

r = requests.patch('http://httpbin.org/patch')
15 голосов
/ 26 января 2012

Кажется, работает и в 2.7.1.

>>> 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
4 голосов
/ 11 августа 2011

Я попробовал это в Python 3, и, похоже, это сработало (но у меня нет удобного сервера, поддерживающего тип запроса PATCH):

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

Я предполагаю, что HTTP 405 исходит от сервера и что он "не разрешен".

Кстати, спасибо, что показали мне классный метод PATCH в HTTP.

2 голосов
/ 03 мая 2012

Это невероятно просто с httplib2 :

import httplib2

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

Я сам использовал библиотеку httplib2 в профессиональной среде REST, которая включает поддержку PATCH. Он поддерживает Python 2.3 или новее (включая 3.x) и прекрасно работает!

...