前言
程序收到請(qǐng)求后,會(huì)根據(jù)URL來尋找相應(yīng)的視圖函數(shù),隨后由其生成頁面發(fā)送回給客戶端。其中,不同的URL對(duì)應(yīng)著不同的視圖函數(shù),這就存在一個(gè)映射關(guān)系。而處理這個(gè)映射關(guān)系的功能就叫做路由。路由的實(shí)現(xiàn)分為兩部分:
1. 生成URL映射關(guān)系
2. 根據(jù)請(qǐng)求匹配正確的視圖函數(shù)
本文將圍繞這兩個(gè)部分進(jìn)行分析。
生成URL映射關(guān)系
在Bottle的示例程序中,我們使用@app.route修飾器來將地址'/hello'映射到視圖函數(shù)hello:
1 @app.route('/hello')2 def hello():3 return 'Hello World!'
下面以'/hello'為例子來分析app.route的代碼。
1 def route(self, path=None, method='GET', callback=None, name=None, 2 apply=None, skip=None, **config): 3 """ 4 :param callback: An optional shortcut to avoid the decorator 5 syntax. ``route(..., callback=func)`` equals ``route(...)(func)`` 6 """ 7 if callable(path): path, callback = None,&nbs