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)