Мне нужно загрузить некоторые данные на сервер, используя HTTP PUT
в Python. Из моего краткого прочтения документации по urllib2, это только HTTP POST
. Есть ли способ сделать HTTP PUT
в Python?
220
В прошлом я использовал различные библиотеки Python HTTP, и я остановился на « Запросах », как на моем любимом. Существующие библиотеки имели довольно удобные интерфейсы, но в итоге код может оказаться слишком длинным для простых операций. Базовый PUT в запросах выглядит так:
payload = {'username': 'bob', 'email': 'bob@bob.com'}
>>> r = requests.put("http://somedomain.org/endpoint", data=payload)
Затем вы можете проверить код статуса ответа с помощью:
r.status_code
или ответ с:
r.content
В Requests много синактического сахара и ярлыков, которые сделают вашу жизнь проще.
json=payload
параметр, если вы хотите, чтобы данные были в теле.источник
requests
библиотеки.Httplib кажется более чистым выбором.
источник
Вы должны взглянуть на модуль httplib . Он должен позволять вам делать любые запросы HTTP.
источник
Некоторое время назад мне нужно было решить эту проблему, чтобы я мог выступать в роли клиента для RESTful API. Я остановился на httplib2, потому что это позволило мне отправлять PUT и DELETE в дополнение к GET и POST. Httplib2 не является частью стандартной библиотеки, но вы можете легко получить ее из магазина сыров.
источник
Вы можете использовать библиотеку запросов, она намного упрощает вещи по сравнению с подходом urllib2. Сначала установите его из pip:
Подробнее об установке запросов .
Затем настройте поставленный запрос:
Смотрите быстрый старт для библиотеки запросов . Я думаю, что это намного проще, чем urllib2, но требует установки и импорта этого дополнительного пакета.
источник
Это было улучшено в python3 и задокументировано в документации stdlib
urllib.request.Request
Класс получилmethod=...
параметр в Python3.Пример использования:
источник
Я также рекомендую httplib2 Джо Грегарио. Я использую это регулярно вместо httplib в стандартной lib.
источник
Вы посмотрели на put.py ? Я использовал это в прошлом. Вы также можете просто взломать свой собственный запрос с помощью urllib.
источник
Конечно, вы можете свернуть свои собственные существующие библиотеки на любом уровне, от сокетов до настройки urllib.
http://pycurl.sourceforge.net/
«PyCurl - это интерфейс Python для libcurl».
«libcurl - это бесплатная и простая в использовании клиентская библиотека для передачи URL, ... поддерживает ... HTTP PUT»
«Основным недостатком PycURL является то, что он является относительно тонким слоем по сравнению с libcurl без какой-либо из этих хороших иерархий классов Pythonic. Это означает, что у него довольно крутая кривая обучения, если вы уже не знакомы с C API libcurl».
источник
Если вы хотите остаться в стандартной библиотеке, вы можете создать подкласс
urllib2.Request
:источник
Более правильный способ сделать это с
requests
:Это вызывает исключение, если в запросе HTTP PUT есть ошибка.
источник