【有书共读21】Python编程之美
Requests 对python标准库中的urllib和httplib进行扩展,提供一些执行http的请求方法。支持国际化域名、url、自动解压缩、内容编码自动识别、浏览器风格的SSL验证,http(s)代理支持及其他功能特性。requests简单交互
requests模块
1.api.py:实现Requests API
2.hooks.py:提供Requests的hooks system的能力
3.models.py:包含支撑Requests 的一些主要对象
4.sessions.py:提供一个Session对象来管理和保持跨请求的一些设置(cookie、认证、网络代理)
5.auth.py:包含一些Requests身份认证的处理器
6.status_codes.py:状态名到状态码的映射查找表
7.cookie.py:兼容性代码,让请求能够使用cookielib.CookieJar
8.adapters.py:包含传输适配器,Requests用它来定义和维护连接
9.exceptions.py:包含所有Requests异常
10.structures.py:支撑Requests一些数据结构
11.certs.py:返回首选的默认CA证书包,其中罗列了受信任的SSL证书
12.utils.py:提供一些Requests内部使用的工具函数,也适用于外部使用。
Requests结构示例
1.顶级API:定义在api.py的函数均以HTTP请求方法。
2.Request和PrepareRequest对象:
requests.Request的数据属性是直接暴露的,直接访问request-instance.headers即可获取或者设置请求头
PrepareRequest对象初始化时,数据属性是空的,需要调用prepared-request-instance.prepare()来填充相关数据。
Requests风格示例
集合和集合运算:一个优雅的符合python风格的习语。
状态码:增强可读性很重要。status_codes.py创建对象,通过对象的属性查找对应状态码。
[*] Werkzeug
Werkzeug中的工具程序都与WSGI相关。
WSGI是python中web应用程序与服务器程序之间交互的接口。规定了web服务器与python应用程序与框架进行的通信的方式。
1.服务器程序每次接收HTTP请求(post/get)时,会调用应用程序。
2.应用程序返回一个可迭代的字节字符串,服务器程序以该字节字符串相应HTTP请求
3.应用程序将会接收两个参数,如webapp(environ,start_response)
Werkzeug实现了一个werkzeug.Client类,用于做一次性测试时替代真实的web服务器程序。
Werkzeug风格示例
1.猜测数据类型的优雅方法:对于实现易于解释,是一个好方式
2.正则表达式:增强可读性
Werkzeug结构示例
1.基于类的装饰器:符合python风格的动态类型使用方式。
2.混入类:用于向一个类添加特定功能(一组相关属性)的类。python允许多继承,支持同时继承多个不同的类的范式,可以模块化地将不同的功能封装到不同类中。
Werkzeug最大用处:告诉用户哪些函数是相关的,哪些是不想关的。
[*] Flask
Flask整合了Werkzeug和Jinja2的web微框架。Flask的目标是创建web应用程序,与Diamond和HowDoI命令行因公程序大不相同,Flask通过运行flask示例应用,使用调试器来单步调试Flask。
Flask日志记录
Diamond默认配置一个日志记录器,示例在应用中如何进行日志记录;
Flask是在库中提供一个日志记录模块。
Flask风格示例
1.Flask路由装饰器:将URL路由添加到目标函数上。
@app.route(\'/\')
def index():
pass
分发请求时,Flask使用URL路由找到哦啊正确的函数,生产响应结果。装饰器将路由代码逻辑分离在目标函数之外,保持函数结构扁平,直观。
Flask结构示例
1.应用特定的默认:Flask是一个web应用开发框架,底层依赖Werkzeug专为WSGI应用开发而设计的通用工具库。其目的是给Flask添加恰当的默认值。
2.模块化:flask.werkzeug.Response文档字符串可以继承Response对象并在Flask主对象中适用新定义的类。
页:
[1]