Welche von ihnen ist ein guter Weg, eine API zu beantragen?
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.
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.