Tornado 使用路由配置来映射 URL 到相应的处理器(RequestHandler)。以下是 Tornado 中基本的路由使用方法:

1. 基本路由配置

在 Tornado 中,通过 Application 类的构造函数或 add_handlers 方法配置路由。下面是一个简单的例子:
import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, Tornado!")

class OtherHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("This is another handler!")

def make_app():
    return tornado.web.Application([
        (r'/', MainHandler),
        (r'/other', OtherHandler),
    ])

if __name__ == "__main__":
    app = make_app()
    app.listen(8888)
    print("Server is running at http://localhost:8888")
    tornado.ioloop.IOLoop.current().start()

在上述例子中,make_app 函数创建了一个应用实例,其中包含两个路由规则:'/' 映射到 MainHandler 处理器,'/other' 映射到 OtherHandler 处理器。

2. 正则表达式匹配

Tornado 的路由规则支持正则表达式匹配,允许更灵活的路由配置。例如:
class RegexHandler(tornado.web.RequestHandler):
    def get(self, value):
        self.write(f"Received value: {value}")

def make_app():
    return tornado.web.Application([
        (r'/path/(\w+)', RegexHandler),
    ])

在上述例子中,r'/path/(\w+)' 中的 (\w+) 是一个正则表达式捕获组,匹配任意字母数字字符。请求 /path/some_value 时,将调用 RegexHandler 处理器,并将匹配到的值传递给 get 方法。

3. 参数传递

你可以在路由规则中通过元组传递额外的参数,这些参数会被传递给相应的处理器:
class ParameterHandler(tornado.web.RequestHandler):
    def get(self, parameter):
        self.write(f"Received parameter: {parameter}")

def make_app():
    return tornado.web.Application([
        (r'/with_parameter/([^/]+)', ParameterHandler, dict(extra_param="additional")),
    ])

在上述例子中,dict(extra_param="additional") 将额外的参数传递给 ParameterHandler 处理器。当请求 /with_parameter/value 时,ParameterHandler 的 get 方法将接收到参数值和额外的参数。

这些基本的路由配置方式可以满足大多数应用的需求。如果你的应用需要更复杂的路由配置,可以参考 Tornado 文档中关于路由的更多高级配置选项。


转载请注明出处:http://www.pingtaimeng.com/article/detail/7426/Tornado