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
规则可能应该移到第二条规则之上,尽管很难通过阅读正则表达式来确定那里是否存在真正的冲突。
我一直试图从 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
规则可能应该移到第二条规则之上,尽管很难通过阅读正则表达式来确定那里是否存在真正的冲突。