initial project setup with README and ignore
This commit is contained in:
2
app/middleware/__init__.py
Normal file
2
app/middleware/__init__.py
Normal file
@@ -0,0 +1,2 @@
|
||||
"""Middleware components."""
|
||||
|
||||
26
app/middleware/request_id.py
Normal file
26
app/middleware/request_id.py
Normal file
@@ -0,0 +1,26 @@
|
||||
"""Request ID middleware for request tracing."""
|
||||
|
||||
import uuid
|
||||
from fastapi import Request
|
||||
from starlette.middleware.base import BaseHTTPMiddleware
|
||||
from starlette.responses import Response
|
||||
|
||||
|
||||
class RequestIDMiddleware(BaseHTTPMiddleware):
|
||||
"""Middleware to add unique request ID to each request."""
|
||||
|
||||
async def dispatch(self, request: Request, call_next):
|
||||
# Generate or retrieve request ID
|
||||
request_id = request.headers.get("X-Request-ID") or str(uuid.uuid4())
|
||||
|
||||
# Add request ID to request state
|
||||
request.state.request_id = request_id
|
||||
|
||||
# Process request
|
||||
response = await call_next(request)
|
||||
|
||||
# Add request ID to response headers
|
||||
response.headers["X-Request-ID"] = request_id
|
||||
|
||||
return response
|
||||
|
||||
Reference in New Issue
Block a user