Middleware classes

MicroPie defines abstract base classes for writing middleware. Use these classes to intercept requests, implement custom routing, authentication, logging and other cross‑cutting concerns. See the Writing middleware guide for practical examples.

HttpMiddleware

class HttpMiddleware

Base class for HTTP middleware. Subclasses must implement two asynchronous methods:

before_request(request)

Called before the HTTP handler runs. request is the Request object. Return a dictionary {"status_code": status, "body": body, "headers": headers} to short‑circuit the request and send a response immediately. To continue processing, return None.

after_request(request, status_code, response_body, extra_headers)

Called after the handler has completed but before the response is sent. You may return a dictionary with updated status_code, body and headers. Return None to leave the response unchanged.

WebSocketMiddleware

class WebSocketMiddleware

Base class for WebSocket middleware. Subclasses must implement these methods:

before_websocket(request)

Called before a WebSocket handler runs. request is a WebSocketRequest object. Return a dictionary {"code": code, "reason": reason} to reject the connection with the given close code and reason. Return None to allow the connection.

after_websocket(request)

Called after the WebSocket handler completes. Use this to release resources or log activity. Return value is ignored.