Метод match класса Router
Метод match применяется к объекту Router
и выполняет поиск подходящего маршрута для переданного
окружения. Первым параметром передаётся словарь окружения
environ, содержащий информацию о запросе. Метод
возвращает кортеж из целевого обработчика и словаря с
параметрами маршрута. Если подходящий маршрут не найден,
возвращается None вместо обработчика.
Синтаксис
router.match(environ)
Пример
Давайте создадим маршрутизатор, добавим маршрут и выполним сопоставление с окружением:
from bottle import Router
router = Router()
router.add('/user/<name>', 'GET', lambda name: name, name='user')
environ = {
'REQUEST_METHOD': 'GET',
'PATH_INFO': '/user/abcde'
}
res = router.match(environ)
print(res)
Результат выполнения кода:
(<function <lambda> at 0x...>, {'name': 'abcde'})
Пример
Давайте проверим поведение метода, когда маршрут не найден:
from bottle import Router
router = Router()
router.add('/user/<name>', 'GET', lambda name: name, name='user')
environ = {
'REQUEST_METHOD': 'GET',
'PATH_INFO': '/article'
}
res = router.match(environ)
print(res)
Результат выполнения кода:
(None, {})
Пример
Давайте используем метод match вместе с
приложением Bottle и посмотрим, как маршрутизатор
находит обработчик:
from bottle import Bottle
app = Bottle()
@app.route('/hello')
def hello():
return 'hello'
environ = {
'REQUEST_METHOD': 'GET',
'PATH_INFO': '/hello'
}
res = app.router.match(environ)
print(res[0]())
Результат выполнения кода:
"hello"
Смотрите также
-
класс
Router,
который управляет маршрутами приложения -
метод
add,
который регистрирует новый маршрут -
метод
build,
который строит URL по имени маршрута -
метод
add_filter,
который добавляет фильтр для маршрутов