mirror of https://github.com/encode/starlette.git
1.0 KiB
1.0 KiB
Starlette includes a Router
class which is an ASGI application that
dispatches incoming requests to endpoints or submounted applications.
from starlette.routing import Mount, Route, Router
from myproject import Homepage, SubMountedApp
app = Router([
Route('/', endpoint=Homepage, methods=['GET']),
Mount('/mount', app=SubMountedApp)
])
Paths can use URI templating style to capture path components.
Route('/users/{username}', endpoint=User, methods=['GET'])
Path parameters are made available in the request, as the request.path_params
dictionary.
Because the target of a Mount
is an ASGI instance itself, routers
allow for easy composition. For example:
app = Router([
Route('/', endpoint=Homepage, methods=['GET']),
Mount('/users', app=Router([
Route('/', endpoint=Users, methods=['GET', 'POST']),
Route('/{username}', endpoint=User, methods=['GET']),
]))
])
The router will respond with "404 Not found" or "405 Method not allowed" responses for requests which do not match.