Tornado 端点匹配

Tornado endpoint matching

我一直试图从 tornado 中找到一些关于端点匹配优先级的文档,但我找不到任何东西。我想知道 tornado 进行端点匹配的预期行为是什么。

示例:

def make_app():
    return tornado.web.Application(
            (r"/api/v1/tree/", test1),
            (
                r"/api/v1/?(?P<variable1>[A-Za-z0-9-]+)?/?(?P<variable2>[A-Za-z0-9-]+)?",
                test2,
            ),
            (r"/api/v1/garden/tree/" + r"([^/]+)/", test3)
            ]
     )

特别是我想知道第一个和第三个方法是否会被调用,或者第二个调用是否会使其他方法被忽略。

所有规则按顺序考虑,使用第一个匹配项。因此在这种情况下,将始终考虑 /api/v1/tree/ 规则。 /api/v1/garden/tree 规则可能应该移到第二条规则之上,尽管很难通过阅读正则表达式来确定那里是否存在真正的冲突。