2010-06-24 46 views
1

每当看着用于Python API库,那里似乎是他们简单地用大约一半:以下哪一种是请求API的好方法?

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

,并使用约一半:

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

我倾向于认为第二个版本是“凉“(我偏向于大多数事物的OO方法)。

是否有利用或理由相互使用一个。或者,我错过了一些东西。我怀疑urllib2.urlopen在其实现中使用HTTPSConnection,所以也许我只是代表我编写较少的代码。无论如何,我都会喜欢一些反馈。谢谢。

回答

4

是的,urllib2使用HTTPSConnection(或任何类型的连接适用于协议)在其实施。这基本上只是一种快捷方式,可以让人们用httplib做的最常见的事情。

urllib2也有一些代码来处理像重定向和身份验证请求的东西,所有的东西,你可能必须手动编码,如果你是用纯httplib

编辑:回应Michael的评论,如果您对物体与数据感到疑惑......那么这取决于您将如何处理它。如果你需要连接对象(比如做一些特殊的事情,也许是一个存活连接),那么一定要继续,使用httplib的方法并返回连接对象。但是,如果您只是想获取数据,只需获取数据并将其返回即可。如果你喜欢OOP,那么从技术上讲,Python中的所有东西都是一个对象;你从urllib2.urlopen得到的是一个类似文件的对象,它有方法将其值作为字符串对象或行列表(也包括字符串对象)检索。我认为大多数Python程序员会认为在后一种情况下使用httplib是一种浪费。

+2

确实如此,但并没有真正回答他的问题。他想知道从API调用返回对象是否有优势,而不仅仅是返回数据(我认为) – 2010-06-24 17:43:17

+0

@Michael:如果是这种情况,我想我误解了这个问题。 – 2010-06-24 17:45:00

+0

'urllib2.urlopen'返回一个类似文件的对象,而不是一个字符串。 – orokusaki 2010-06-24 19:26:59