我正在设计一种使用基于REST的Web服务的数据的服务。我知道在不同模块之间进行选择时有多种选择。
有一个问题比较urllib2 vs requests,但该帖子只是提供答案作为使用请求而不是要考虑的事项。
从应用程序架构的角度来看,在选择以下模块之前需要考虑哪些因素:
的urllib
的urllib2
http.client
请求
我的应用程序将接受JSON或XML格式的数据。
答案 0 :(得分:2)
使用requests
只是为了简单起见。 Github上有一个informative gist,它使用urllib2
与requests
比较登录到经过身份验证的资源。如果您正在使用JSON响应,requests
可以轻松地将响应直接转换为Python字典:
r = requests.get("http://example.com/api/query?param=value¶m2=value2", auth=(user, passwd))
results_dict = r.json()
这很简单 - 没有额外的json
导入来处理,没有dump
和load
等等。只需获取数据,将其转换为Python,完成。
urllib
和urllib2
不太方便。您必须构建请求和处理程序,设置身份验证管理器,处理您不应该使用的许多细节。 http.client
甚至更低级别 - urllib
用于执行其内容的内容,并且通常不会直接访问。今天的请求变得越来越强大,所有这些都具有使事情变得尽可能容易的总体原则,但如果您的要求与众不同,则可以根据需要进行尽可能多的定制。它有一个非常活跃的开发和用户社区,所以如果你需要完成某些事情,其他人也有可能做到这一点,而且他们的发布时间很短,你可能会在很长时间内看到补丁。
因此,如果您主要是消费网络服务,requests
是一个简单的选择。而且,如果您真的无法用它做任何事情,那么其他人就会在标准的库中为您提供支持以防万一。