Spec-Zone.ru › Falcon 1.2

Маршрутизация

Модуль 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 и ресурсом.

Параметры:
  • uri_template (str) – Шаблон URI для использования в маршруте
  • method_map (dict) – Сопоставление HTTP-методов (например, «GET», «POST») с методами объекта ресурса.
  • resource (object) – Экземпляр ресурса, который нужно связать с шаблоном 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API