aiohttp_route_decorator
The library provides @route decorator for aiohttp.web, resembling the contract of Flask @app.route.
The imaginary aiohttp @app.route decorator is discouraged for multiple reasons; this one tries to solve part of those problems (the app doesn’t need to be global at the very least).
Installation
pip install aiohttp_route_decorator
Usage
Create a route object in each of your handler modules, and decorate the handlers:
# myapp/handlers.py
from aiohttp_route_decorator import RouteCollector
route = RouteCollector()
@route('/')
async def index(request):
return web.Response(body=b'OK')
@route('/publish', method='POST')
async def publish(request):
return web.Response(body=b'OK')
@route('/login', methods=['GET', 'POST'], name='login')
async def login(request):
if request.method == 'POST':
return web.Response(body=b'OK')
return web.Response(body=b'Login')
When you init the application, push the collected routes into app.router:
from aiohttp import web
from myapp import handlers
def run():
app = web.Application()
handlers.route.add_to_router(app.router)
web.run_app(app)
Non-decorator use
If you prefer to keep your routes together, you can construct the list manually after your handers:
from aiohttp_route_decorator import RouteCollector, Route
async def index(request):
return web.Response(body=b'OK')
async def publish(request):
return web.Response(body=b'OK')
async def login(request):
if request.method == 'POST':
return web.Response(body=b'OK')
return web.Response(body=b'Login')
routes = RouteCollector([
Route('/', index),
Route('/publish', publish, method='POST'),
Route('/login', login, methods=['GET', 'POST'], name='login'),
])
Prefixed routes
You can provide common route prefix that will be prepended to all routes:
from aiohttp_route_decorator import RouteCollector
routes = RouteCollector(prefix='/app')
@route('/')
async def index(request):
return web.Response(body=b'OK')
@route('/publish', method='POST')
async def publish(request):
return web.Response(body=b'OK')
...
handlers.route.add_to_router(app.router)
# /app/ -> index
# /app/publish -> publish
You can also provide the prefix within add_to_router() call instead:
from aiohttp_route_decorator import RouteCollector
routes = RouteCollector()
@route('/')
async def index(request):
return web.Response(body=b'OK')
@route('/publish', method='POST')
async def publish(request):
return web.Response(body=b'OK')
...
handlers.route.add_to_router(app.router, prefix='/app')
# /app/ -> index
# /app/publish -> publish
…or use both:
from aiohttp_route_decorator import RouteCollector
routes = RouteCollector(prefix='/app')
@route('/')
async def index(request):
return web.Response(body=b'OK')
@route('/publish', method='POST')
async def publish(request):
return web.Response(body=b'OK')
...
handlers.route.add_to_router(app.router, prefix='/project')
# /project/app/ -> index
# /project/app/publish -> publish
The non-decorator version of RouteCollector can also accept prefix:
from aiohttp_route_decorator import RouteCollector, Route
async def index(request):
return web.Response(body=b'OK')
async def publish(request):
return web.Response(body=b'OK')
routes = RouteCollector(prefix='/app', routes=[
Route('/', index),
Route('/publish', publish, method='POST'),
])
Parameters reference
route(path, *, method='GET', methods=None, name=None, **kwargs)
path (str) — route path. Should be started with slash ('/').
method (str) — HTTP method for route. Should be one of 'GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'OPTIONS' or '*' for any method.
methods (List[str]) — optional shortcut for creating several routes with different HTTP methods at once. If used, should be a list of acceptable values for method argument.
name (str) — optional route name.
kwargs — other parameters to be passed to aiohttp.web.Resource.add_route().
Metadata
Release files for aiohttp_route_decorator 0.1.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| aiohttp_route_decorator-0.1.4.tar.gz | 3.8 kB | Details |
Release files / aiohttp_route_decorator-0.1.4.tar.gz
| Download URL | aiohttp_route_decorator-0.1.4.tar.gz |
|---|---|
| Size | 3.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d03fa077255852c26609c6134f342bfd5028b7b4ce19bf7927f55a04684c653c
|
|
BLAKE2b-256 checksum How to use checksums |
4fb63af0444d36812b68367c3bb8ff65d0ccf5ba855ce28cda5ce10ff465021a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |