middleware.protocol

Page actions AI-ready formats and sharing
Open LLM text
Share with AI
Ask Claude Ask ChatGPT Ask Gemini Ask Copilot

Middleware protocol and Next type alias.

A middleware is any callable matching::

async def my_mw(request: Request, next: Next) -> AnyResponse: ...

No base class required. The framework checks the shape, not the…

Middleware protocol and Next type alias.

A middleware is any callable matching::

async def my_mw(request: Request, next: Next) -> AnyResponse: ...

No base class required. The framework checks the shape, not the lineage.

Thenext callable may return Response, StreamingResponse, orSSEResponse. All three share the .with_header()/ .with_status()chainable API, so middleware can modify them uniformly.

middleware.protocol

Name Type Default Description
type
qualified_name
element_type
description
source_file
line_number
is_autodoc
autodoc_element
_autodoc_template
_autodoc_url_path
_autodoc_page_type
title
doc_content_hash

Symbols on this page

Middleware
class

Protocol for chirp middleware.

Accepts both functions and callable objects::

# Function middleware
async def timing(request: Request, next: Next) -> AnyResponse:
    start = time.monotonic()
    response = await next(request)
    elapsed = time.monotonic() - start
    return response.with_header("X-Time", f"{elapsed:.3f}")

# Class middleware
class RateLimiter:
    async def __call__(self, request: Request, next: Next) -> AnyResponse:
        ...

View source · /home/runner/work/chirp/chirp/site/../src/chirp/middleware/protocol.py:1