python - 以下哪项是请求 API 的好方法?

标签 python api urlopen

每当查看 Python 的 API 库时,似乎有一半只是简单地使用:

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(或适用于该协议(protocol)的任何类型的连接)。它基本上只是执行人们使用 httplib 执行的最常见操作的快捷方式。

urllib2 也有一些代码来处理诸如重定向和身份验证请求之类的事情,如果您使用纯 httplib 来处理所有这些事情,您可能需要手动编写代码。

编辑:作为对 Michael 评论的回应,如果您想了解对象与数据……这在某种程度上取决于您将如何处理它。如果您需要连接对象(例如,用它做一些特殊的事情,可能是一个保持连接),那么当然,继续使用 httplib 方式并返回连接对象。但是,如果您只是想获取数据,那么只需获取数据并返回即可。如果您喜欢 OOP,请知道从技术上讲,Python 中的一切都是对象;您从 urllib2.urlopen 得到的是一个类似文件的对象,它具有将其值检索为字符串对象或行列表(也是字符串对象)的方法。我认为大多数 Python 程序员会认为在后一种情况下使用 httplib 是一种浪费。

关于python - 以下哪项是请求 API 的好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3112452/

相关文章:

api - 如何使用客户电话号码将 Whatsapp api 链接添加到电子邮件订单?

python - py.test 2.3.5 : generative tests that use fixtures?

python - 在 Python/Django 中将用户的 facebook/twitter 好友与网站用户进行比较

javascript - 如何使用for循环在div中显示restful api获取的数据?

套接字错误 Errno 10060 的 Python try/except 语句

Python selenium 测试卡在 urlopen 中

json - 在 Python 中解析 HTTP 响应

python - RabbitMQ 消费者停止接收消息

python cv2.VideoCapture 打不开

java - 使用org.apache.hadoop DistributedFileSystem时,线程 “main” java.lang.NullPointerException中的异常