python bottle framework如何通过decorator安装routing handler?
How does python bottle framework install routing handler through decorator?
在python bottle框架下安装routing handler的例子如下:
from bottle import Bottle, run
app = Bottle()
@app.route('/hello')
def hello():
return "Hello World!"
run(app, host='localhost', port=8080)
以上代码会将 "localhost:8080/hello" 路由到显示 "Hello World!" 的页面(由函数 hello 处理)。
我想知道这个安装过程是如何完成的?
框架如何知道函数 "hello" 使用 "app.route" 作为装饰器,从而将传入请求分派给该函数?
函数名称对 Bottle 没有任何意义,但只要您提供 route
装饰器的路径即可。
Route
构造函数的参数包括 callback
和 rule
,其中 callback
是您的函数,rule
是路径字符串。
如果提供了一条或多条路径,Bottle 将简单地为每条路径创建一个 Route
实例。
函数名称 只有 起作用,如果您不提供到 route
的单一路径。然后 Bottle 将从一个函数的签名中生成可能的路径(参见 source for yieldroutes
)并为每个路径创建一个 Route
实例。
来自Bottle.route
's source的相关部分:
for rule in makelist(path) or yieldroutes(callback):
for verb in makelist(method):
verb = verb.upper()
route = Route(self, rule, verb, callback, name=name,
plugins=plugins, skiplist=skiplist, **config)
self.add_route(route)
在python bottle框架下安装routing handler的例子如下:
from bottle import Bottle, run
app = Bottle()
@app.route('/hello')
def hello():
return "Hello World!"
run(app, host='localhost', port=8080)
以上代码会将 "localhost:8080/hello" 路由到显示 "Hello World!" 的页面(由函数 hello 处理)。 我想知道这个安装过程是如何完成的? 框架如何知道函数 "hello" 使用 "app.route" 作为装饰器,从而将传入请求分派给该函数?
函数名称对 Bottle 没有任何意义,但只要您提供 route
装饰器的路径即可。
Route
构造函数的参数包括 callback
和 rule
,其中 callback
是您的函数,rule
是路径字符串。
如果提供了一条或多条路径,Bottle 将简单地为每条路径创建一个 Route
实例。
函数名称 只有 起作用,如果您不提供到 route
的单一路径。然后 Bottle 将从一个函数的签名中生成可能的路径(参见 source for yieldroutes
)并为每个路径创建一个 Route
实例。
来自Bottle.route
's source的相关部分:
for rule in makelist(path) or yieldroutes(callback):
for verb in makelist(method):
verb = verb.upper()
route = Route(self, rule, verb, callback, name=name,
plugins=plugins, skiplist=skiplist, **config)
self.add_route(route)