Вопрос

Всякий раз, когда смотрит на библиотеки API для Python, они, кажется, около половины из них просто используют:

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

и около половины используют:

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

Я склонен думать, что вторая версия «круче» (я предвзято к более оо -подходу к большинству вещей).

Есть ли выгода или причина для использования одного над другим. Или я что -то упускаю по пути. Я подозреваю, что urllib2.urlopen Использование HTTPSConnection В своей реализации, поэтому, возможно, он просто меньше кодирования от моего имени. Как бы ни был, я бы полюбил отзывы. Спасибо.

Это было полезно?

Решение

Ага, urllib2 Использование HTTPSConnection (Или какое -либо подключение подходит для протокола) в его реализации. Это в основном просто ярлык, чтобы делать самые обычные вещи, с которыми люди делают httplib.

urllib2 Также есть какой -то код для обработки таких вещей, как перенаправления и запросы на аутентификацию, все, что вам, возможно, придется кодировать вручную, если вы делаете это с простым httplib.

РЕДАКТИРОВАТЬ: В ответ на комментарий Майкла, если вам было интересно об объекте против данных ... это зависит от того, что вы собираетесь делать с ним. Если вам нужен объект соединения (например, что -то особенное с ним, может быть, соединение), то, конечно, продолжайте и используйте httplib путь и вернуть объект соединения. Но если вы просто пытаетесь получить данные, просто получите данные и верните их. Если вам нравится ООП, знайте, что все в Python технически является объектом; от чего вы получаете urllib2.urlopen является файловым объектом, который имеет методы для извлечения его значения в качестве объекта строки или в качестве списка строк (также строковых объектов). Я думаю, что большинство программистов Python считают, что это пустая трата усилий для использования httplib в последнем случае.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top