Files
deb-python-falcon/docs/api/routing.rst
Kurt Griffiths c986dd1aa5 feat(Request): Expose the URI template that was matched for the request (#889)
This has been requested by several members of the community who would
like a way to access the URI template in middleware, etc. (e.g., for
logging).

Fixes #619
2016-09-14 18:49:32 +02:00

48 lines
1.4 KiB
ReStructuredText

.. _routing:
Routing
=======
The *falcon.routing* module contains utilities used internally by
:py:meth:`falcon.API` to route requests. They are exposed here for use by
custom routing engines.
A custom router is any class that implements the following interface:
.. code:: python
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):
"""Search for a route that matches the given partial URI.
Args:
uri(str): The requested path to route
Returns:
tuple: A 4-member tuple composed of (resource, method_map,
params, uri_template), or ``None`` if no route matches
the requested path
"""
A custom routing engine may be specified when instantiating
:py:meth:`falcon.API`. For example:
.. code:: python
fancy = FancyRouter()
api = API(router=fancy)
.. automodule:: falcon.routing
:members: create_http_method_map, compile_uri_template, CompiledRouter