aio-libs / aio-libs/aiohttp-debugtoolbar
Improve documentation on setting up middleware correctly
- Dominant language
- JavaScript
- Stars
- 202
- Forks
- 29
- PR merge metrics
- No merged PRs in 30d
Description
We need to explain how to setup the middleware correctly so that it doesn't interfere with other middlewares.
This is the function I use in my projects:
```
def setup_debugtoolbar(app: web.Application) -> None:
"""Initialise debugtoolbar for app."""
def is_error_middleware(f: _Middleware) -> bool:
return getattr(f, "func", f) == error_middleware
# Find the index of error_middleware (which may be a functools.partial).
found_middleware = next(filter(is_error_middleware, app.middlewares))
# Add debugtoolbar middleware to just before app's error handler.
# This avoids debugtoolbar interrupting other middlewares.
insert_pos = app.middlewares.index(found_middleware) + 1
app.middlewares.insert(insert_pos, aiohttp_debugtoolbar.middleware)
# setup() won't add the middleware if it's already present.
aiohttp_debugtoolbar.setup(app, check_host=False)
```
Which is called after the app's normal middlewares have already been configured.
Contributor guide
Assessment
This issue has not been assessed yet.