как сделать запрос на удаление / вставку в Python - PullRequest
3 голосов
/ 05 июля 2010

Я могу сделать запрос на получение или публикацию с помощью urllib, но как мне сделать DELETE- и PUT-запросы?

Ответы [ 7 ]

7 голосов
/ 28 июля 2011

Библиотека запросов может обрабатывать POST, PUT, DELETE и все другие методы HTTP и значительно менее страшна, чем urllib, httplib и их варианты.

4 голосов
/ 12 сентября 2012

Вы можете переопределить get_method примерно так:

def _make_request(url, data, method):
    request.urllib2.Request(url, data=data)
    request.get_method = lambda: method

Затем вы передадите "DELETE" как метод.

Этот ответ охватывает детали.

1 голос
/ 05 июля 2010

Насколько я знаю, urllib и urllib2 поддерживают только GET и POST запросы.Вам, вероятно, стоит взглянуть на httplib или httplib2 .

1 голос
/ 05 июля 2010

http://twistedmatrix.com/documents/current/web/howto/client.html

Если вы хотите работать с HTTP в витой, используя клиентскую часть, я бы посоветовал проверить это Это демонстрирует, как вы действительно можете легко сделать запрос, используя класс агента.

1 голос
/ 05 июля 2010

PUT-запрос может быть выполнен httplib2

http://code.google.com/p/httplib2

1 голос
/ 05 июля 2010

Метод устанавливается неявно в urlopen вызов

Когда вы предоставите параметр данных будет использоваться POST.

urllib.request.urlopen(url, data=None[, timeout])

Я не думаю,возможно использовать метод DELETE HTTP с urlib из-за этой строки:

Request.get_method ()
Возвращает строку, указывающую метод HTTP-запроса.Это имеет смысл только для HTTP-запросов и в настоящее время всегда возвращает «GET» или «POST».

Попробуйте вместо этого использовать httplib , httplib2 или Twisted . Для лучшей поддержки методов HTTP.

0 голосов
/ 25 мая 2016

Методами HTTP по умолчанию в библиотеке urllib являются POST и GET:

def get_method(self):
    """Return a string indicating the HTTP request method."""
    default_method = "POST" if self.data is not None else "GET"
    return getattr(self, 'method', default_method)

Но мы можем переопределить эту функцию get_method (), чтобы получить запрос DELETE:

req = urllib.request.Request(new_url)
req.get_method = lambda: "DELETE"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...