Necesito subir algunos datos a un servidor usando HTTP PUT
en Python. De mi breve lectura de los documentos urllib2, solo hace HTTP POST
. ¿Hay alguna forma de hacer un HTTP PUT
en python?
220
He usado una variedad de libs HTTP de Python en el pasado, y me he decidido por ' Solicitudes ' como mi favorito. Las bibliotecas existentes tenían interfaces bastante utilizables, pero el código puede terminar siendo unas pocas líneas demasiado largas para operaciones simples. Un PUT básico en las solicitudes se ve así:
payload = {'username': 'bob', 'email': '[email protected]'}
>>> r = requests.put("http://somedomain.org/endpoint", data=payload)
Luego puede verificar el código de estado de respuesta con:
r.status_code
o la respuesta con:
r.content
Requests tiene mucho azúcar sináctico y atajos que te harán la vida más fácil.
json=payload
parámetro si desea que los datos estén en el cuerpo.fuente
requests
biblioteca en su lugar.Httplib parece una opción más limpia.
fuente
Deberías echar un vistazo al módulo httplib . Debería permitirle realizar cualquier tipo de solicitud HTTP que desee.
fuente
Necesitaba resolver este problema hace un tiempo para poder actuar como cliente para una API RESTful. Me decidí por httplib2 porque me permitía enviar PUT y DELETE además de GET y POST. Httplib2 no es parte de la biblioteca estándar, pero puede obtenerlo fácilmente en la quesería.
fuente
Puede usar la biblioteca de solicitudes, simplifica mucho las cosas en comparación con el enfoque urllib2. Primero instálalo desde pip:
Más información sobre la instalación de solicitudes .
Luego configure la solicitud de venta:
Consulte la biblioteca de inicio rápido para solicitudes . Creo que esto es mucho más simple que urllib2 pero requiere la instalación e importación de este paquete adicional.
fuente
Esto se mejoró en python3 y se documentó en la documentación de stdlib
La
urllib.request.Request
clase ganó unmethod=...
parámetro en python3.Algunos ejemplos de uso:
fuente
También recomiendo httplib2 de Joe Gregario. Utilizo esto regularmente en lugar de httplib en la lib estándar.
fuente
¿Has echado un vistazo a put.py ? Lo he usado en el pasado. También puede hackear su propia solicitud con urllib.
fuente
Por supuesto, puede crear las suyas propias con las bibliotecas estándar existentes en cualquier nivel, desde sockets hasta ajustar urllib.
http://pycurl.sourceforge.net/
"PyCurl es una interfaz de Python para libcurl".
"libcurl es una biblioteca de transferencia de URL del lado del cliente gratuita y fácil de usar, ... soporta ... HTTP PUT"
"El principal inconveniente con PycURL es que es una capa delgada relativa sobre libcurl sin ninguna de esas agradables jerarquías de clase Pythonic. Esto significa que tiene una curva de aprendizaje algo pronunciada a menos que ya estés familiarizado con la API C de libcurl".
fuente
Si desea permanecer dentro de la biblioteca estándar, puede subclasificar
urllib2.Request
:fuente
Una forma más adecuada de hacer esto
requests
sería:Esto genera una excepción si hay un error en la solicitud HTTP PUT.
fuente