Маршрутизация
Модуль falcon.routing содержит утилиты, используемые внутри falcon.API() для маршрутизации запросов. Они предоставляются здесь для использования пользовательскими маршрутизаторами.
Пользовательские маршрутизаторы могут наследоваться от стандартного CompiledRouter движка или реализовывать совершенно другую стратегию маршрутизации (например, основанную на объектах).
Пользовательский маршрутизатор — это любой класс, реализующий следующий интерфейс:
class FancyRouter(object):
def add_route(self, uri_template, method_map, resource):
"""Adds a route between URI path template and resource.
Args:
uri_template (str): The URI template to add.
method_map (dict): A method map obtained by calling
falcon.routing.create_http_method_map.
resource (object): Instance of the resource class that
will handle requests for the given URI.
"""
def find(self, uri, req=None):
"""Search for a route that matches the given partial URI.
Args:
uri(str): The requested path to route.
Keyword Args:
req(Request): The Request object that will be passed to
the routed responder. The router may use `req` to
further differentiate the requested route. For
example, a header may be used to determine the
desired API version and route the request
accordingly.
Note:
The `req` keyword argument was added in version
1.2. To ensure backwards-compatibility, routers
that do not implement this argument are still
supported.
Returns:
tuple: A 4-member tuple composed of (resource, method_map,
params, uri_template), or ``None`` if no route matches
the requested path.
"""
Пользовательский движок маршрутизации может быть указан при инициализации falcon.API(). Например:
fancy = FancyRouter() api = API(router=fancy)
Стандартный маршрутизатор и служебные функции.
Этот пакет реализует стандартный движок маршрутизации Falcon, а также включает служебные функции для помощи в реализации пользовательских маршрутизаторов.
-
falcon.routing.create_http_method_map(resource)[source] -
Сопоставляет HTTP-методы (например, «GET», «POST») с методами объекта ресурса.
Параметры: resource – Объект с методами responder, следующими соглашению об именовании on_*, соответствующими каждому поддерживаемому методу ресурса. Например, если ресурс поддерживает GET и POST, он должен определить on_get(self, req, resp)иon_post(self, req, resp).Возвращает: Сопоставление HTTP-методов с обработчиками. Тип возвращаемого значения: dict
-
falcon.routing.compile_uri_template(template)[source] -
Компилирует заданную строку шаблона URI в обработчик шаблонов.
Эта функция может использоваться для построения пользовательских движков маршрутизации, которые итерируются по списку возможных маршрутов, пытаясь сопоставить входящий запрос с составленным регулярным выражением каждого маршрута.
Каждое поле преобразуется в именованную группу, так что при обнаружении совпадения поля легко извлекаются с помощью
re.MatchObject.groupdict().Эта функция не поддерживает более гибкий синтаксис шаблонов, используемый в стандартном маршрутизаторе. Распознаются только простые пути с выражениями полей в скобках. Например:
/ /books /books/{isbn} /books/{isbn}/characters /books/{isbn}/characters/{name}Также обратите внимание, что если шаблон содержит заключительный символ косой черты, он будет удален для нормализации логики маршрутизации.
Параметры: template (str) – Шаблон для компиляции. Обратите внимание, что имена полей ограничены ASCII буквами a-z, A-Z и символом подчеркивания. Возвращает: (template_field_names, template_regex) Тип возвращаемого значения: tuple
-
class falcon.routing.CompiledRouter[source] -
Быстрый маршрутизатор URI, который компилирует свою логику маршрутизации в код Python.
Обычно вам не нужно использовать этот класс маршрутизатора напрямую, так как экземпляр создается по умолчанию при инициализации класса falcon.API.
Маршрутизатор обрабатывает пути URI как дерево сегментов URI и ищет, проверяя URI по одному сегменту за раз. Вместо интерпретации дерева маршрутов для каждого поиска он генерирует встроенный, особый код Python для выполнения поиска, затем компилирует этот код. Это делает обработку маршрута довольно быстрой.
-
add_route(uri_template, method_map, resource)[source] -
Добавляет маршрут между шаблоном пути URI и ресурсом.
Параметры:
-
find(uri, req=None)[source] -
Поиск маршрута, соответствующего заданному частичному URI.
Параметры: uri (str) – Запрашиваемый путь для маршрутизации. Ключевые аргументы: req (Request) – Объект Request, который будет передан обработчику маршрутизации. В настоящее время значение этого аргумента игнорируется CompiledRouter. Маршрутизация основана только на пути.Возвращает: - Кортеж из 4 элементов (resource, method_map,
- params, uri_template), или
Noneесли ни один маршрут не соответствует запрошенному пути.
Тип возвращаемого значения: tuple
-
© 2012–2016 by Rackspace Hosting, Inc. and other contributors
Licensed under the Apache License, Version 2.0.
https://falcon.readthedocs.io/en/1.2.0/api/routing.html