Bottle 对 HTTP 请求的处理
代码结构
我们先分析下bottle.py的代码结构. 这个单文件的框架有2900多行, 大致结构如下(手头的版本是0.10.7):
- 0000-0140: 模块载入, 兼容性调整
- 0140-0200: 逻辑无关的工具函数和工具类定义
- 0200-0240: 异常定义. 需要注意的是, 不需要消息体的HTTP响应, 例如HTTP重定向之类, 在bottle中也被处理成一种异常.
- 0240-0520: URL映射相关逻辑, 包括若干个路由异常的定义.
- 0520:0860: 主Bottle类的定义.
- 0860-1440: 装HTTP请求和响应的类的定义. 微型框架啥都可以省省, 但是这个如果再省, 就不能被称为是框架了.
- 1440-1570: 各种插件.
- 1570-1800: 各种数据结构.
- 1800-2050: 乱七八糟的小函数.
- 2050-2280: 框架虽小, 兼容的服务器倒真不少...
- 2280-2450: 应用控制, 也挺乱的, 两个用来载入app, 一个起server, 还有一个用来自动重启server(这个都有啊喂, 你真是微型框架咩).
- 2450-2830: 模板渲染及处理, 兼容的模板系统也不少.
- 2830-EOF : 变量定义及一些实例化, 以及起内置服务器的main函数.
由于有实例化的部分, 我们得先看看这段. 一旦你要从bottle.py中引入一个名字到你自己的模块, 这些代码就得执行一遍. 除了那些对变量的定义外, 这一段做了下面几件事情:
详细阅读:http://blog.xiaket.org/2012/bottle-source-analysis.html
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。