龙卷风端点匹配

时间:2018-06-28 15:59:49

标签: 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)
            ]
     )

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

1 个答案:

答案 0 :(得分:1)

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