无知的 tonyseek

Yet Another Seeker

【碎片】tornado 用上装饰器路由

貌似很多人是零配置控啊,喜欢类似 Flask 一类的零配置路由,不需要在 run.py 中写一个长列表,只需要在接受请求的函数 or 类前面加一个装饰器,正如:

from bottle import route, run

@route('/:name')
def index(name='World'):
    return '<strong>Hello %s!</strong>' % name

run(host='localhost', port=8080)

对比 web.py 的集中配置:

import web

urls = ("/.*", "hello")
app = web.application(urls, globals())

class hello:
    def GET(self):
        return 'Hello, world!'

if __name__ == "__main__":
    app.run()

貌似二者没神马区别嘛,只不过把集中的配置分散了。当然对于这个问题也是很多不同看法,有人觉得分散了配置不利统一管理,有人觉得把 url 和请求处理者放在一起有利于模块的无缝装卸。当然最理想的是两种选择都存在。在豆瓣上已经看到有人提出 给 web.py 添加装饰器路由的方式 <http://www.douban.com/group/topic/12998784/> _ 了,我自己也写了个 tornado 版的。