使用urllib vs urllib2 vs request vs http.client时应考虑哪些因素

时间:2014-09-18 04:18:08

标签: python restful-architecture

我正在设计一种使用基于REST的Web服务的数据的服务。我知道在不同模块之间进行选择时有多种选择。

有一个问题比较urllib2 vs requests,但该帖子只是提供答案作为使用请求而不是要考虑的事项。

从应用程序架构的角度来看,在选择以下模块之前需要考虑哪些因素:

的urllib

的urllib2

http.client

请求

我的应用程序将接受JSON或XML格式的数据。

1 个答案:

答案 0 :(得分:2)

使用requests只是为了简单起见。 Github上有一个informative gist,它使用urllib2requests比较登录到经过身份验证的资源。如果您正在使用JSON响应,requests可以轻松地将响应直接转换为Python字典:

r = requests.get("http://example.com/api/query?param=value&param2=value2", auth=(user, passwd))
results_dict = r.json()

这很简单 - 没有额外的json导入来处理,没有dumpload等等。只需获取数据,将其转换为Python,完成。

urlliburllib2不太方便。您必须构建请求和处理程序,设置身份验证管理器,处理您不应该使用的许多细节。 http.client甚至更低级别 - urllib用于执行其内容的内容,并且通常不会直接访问。今天的请求变得越来越强大,所有这些都具有使事情变得尽可能容易的总体原则,但如果您的要求与众不同,则可以根据需要进行尽可能多的定制。它有一个非常活跃的开发和用户社区,所以如果你需要完成某些事情,其他人也有可能做到这一点,而且他们的发布时间很短,你可能会在很长时间内看到补丁。

因此,如果您主要是消费网络服务,requests是一个简单的选择。而且,如果您真的无法用它做任何事情,那么其他人就会在标准的库中为您提供支持以防万一。