Frage

Wenn bei API-Bibliotheken für Python sucht, scheint es etwa die Hälfte von ihnen zu sein einfach mit:

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

und etwa die Hälfte mit:

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

Ich neige dazu, die zweite Version zu denken ist „cooler“ (Ich bin hin zu einem OO-Ansatz vorgespannt, um die meisten Dinge).

Gibt es einen Vorteil oder den Grund für einen über die andere verwenden. Oder bin ich etwas fehlt auf dem Weg. Ich würde vermuten, dass urllib2.urlopen Verwendungen bei der Umsetzung HTTPSConnection, so vielleicht ist man einfach weniger Codierung in meinem Namen. Unabhängig davon, welche Art und Weise, würde ich ein Feedback lieben. Danke.

War es hilfreich?

Lösung

Ja, urllib2 verwendet HTTPSConnection (oder was auch immer Art von Verbindung ist geeignet für das Protokoll) in der Umsetzung. Es ist im Grunde nur eine Abkürzung, die häufigste, was Menschen mit httplib tun zu tun.

urllib2 hat auch einige Code Griff Dinge wie Umleitungen und Authentifizierungsanforderungen, alle Dinge, die Sie manuell Code haben könnte, wenn man es mit einfachen httplib taten.

EDIT : Als Antwort auf Michaels Kommentar, wenn Sie sich fragen, über das Objekt vs. Daten ... es ist eine Art hängt davon ab, was du damit zu tun. Wenn Sie das Verbindungsobjekt benötigen (zum Beispiel mit ihm etwas Besonderes zu tun, vielleicht eine Keep-Alive-Verbindung), dann sicher, voran gehen und die httplib Art und Weise nutzen und das Verbindungsobjekt zurück. Aber wenn Sie nur versuchen, die Daten zu erhalten, erhält nur die Daten und gibt es zurück. Wenn Sie wie OOP, weiß, dass alles in Python technisch ein Objekt ist; was man von urllib2.urlopen bekommen, ist eine dateiähnliche Objekt, das Verfahren hat seinen Wert als String-Objekt abzurufen oder als Liste von Zeilen (auch String-Objekte). Ich denke, die meisten Python-Programmierer es eine Verschwendung von Aufwand im letzteren Fall zu verwenden httplib in Betracht ziehen würden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top