app = Application([
(r'/user', UserHandler),
(r'/user?q=.*', UserSearchHandler),
])
上面代码中的正则表达式只能匹配 self.request.path 而不是 self.request.uri, 所以并不能按照它希望的那样工作。
那么 tornado 如何把只是 search query 不同的 url 分配到不同的 handler 中处理呢?
tornado使用URLSpec对象用来mapping url 和 handler,这样每个uri不同请求会分配给不同的handler执行.
调用Application()会把元组(r'/user', UserHandler) 转换成URLSpec对象.