django框架的中间件给我的感受是非常强大,简直无所不能。
所以我就想参照django的中间件造一个bottle的中间件,有一个难题是bottle的相关文档太少,而要造成django那样子的中间件的话,bottle的角色就该只负责路由和封装请求数据和封装返回数据,但是有一点非常重要,就是bottle不能向浏览器输出内容,如果我们用bottle的wsgi方法是会输出到浏览器的。
不过经过分析它的wsgi函数发现了,它内部的处理函数_handle和_cast。
我们只需要调用这两个函数就可以拿到bottle输出结果,再通过全局的response对象就可以拿到状态码和headers。
由于源码还在不断修改中,所以给出自己项目写的中间件:
[https://github.com/yubang/app/blob/master/lib/middle.py](https://github.com/yubang/app/blob/master/lib/middle.py)