Pregunta

Siempre mirando bibliotecas API para Python, parece que hay alrededor de la mitad de ellos simplemente usando:

response = urllib2.urlopen('https://www.example.com/api', data)

y aproximadamente la mitad usando:

connection = httplib.HTTPSConnection('www.example.com/api')
# ... rest omitted for simplicity

tiendo a pensar que la segunda versión es "más frío" (soy parcial hacia un enfoque más orientado a objetos para la mayoría de las cosas).

¿Hay un beneficio o razón para usar uno sobre el otro. O me estoy perdiendo algo en el camino. Sospecho que los usos urllib2.urlopen HTTPSConnection en su aplicación, por lo que quizás uno está simplemente menos de codificación en mi nombre. De cualquier modo, me encantaría algunos comentarios. Gracias.

¿Fue útil?

Solución

Sí, urllib2 utiliza HTTPSConnection (o cualquier tipo de conexión es apropiado para el protocolo) en su aplicación. Es básicamente un atajo para hacer lo que es más común que la gente hace con httplib.

urllib2 también tiene algo de código para cosas como el mango y vuelve a dirigir las peticiones de autenticación, todas las cosas que podría tener que manualmente el código si lo estuviera haciendo con httplib sin formato.

editar : En respuesta al comentario de Michael, si se preguntaban acerca de datos de objetos frente ... que tipo de depende de lo que vas a hacer con él. Si necesita el objeto de conexión (por ejemplo, para hacer algo especial con él, tal vez una conexión de mantenimiento de conexión), entonces seguro, seguir adelante y utilizar la forma httplib y devolver el objeto de conexión. Pero si usted está tratando de obtener los datos, acaba de obtener los datos y devolverla. Si te gusta programación orientada a objetos, saber que todo en Python es un objeto de vista técnico; lo que se obtiene a partir urllib2.urlopen es un tipo fichero objeto que tiene métodos para recuperar su valor como objeto de cadena o como una lista de líneas (también objetos de cadena). Creo que la mayoría de los programadores de Python lo considerarían una pérdida de esfuerzo para el uso httplib en este último caso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top