from typing import Awaitable, Callable from fastapi import HTTPException, Request, Response MiddlewareCallNext = Callable[[Request], Awaitable[Response]] async def validate_json( request: Request, call_next: MiddlewareCallNext ) -> Response: # Only validate JSON for requests with a body if request.method in ("POST", "PUT", "PATCH"): try: # attempt to parse json body await request.json() except Exception: raise HTTPException(status_code=400, detail="Invalid JSON payload") response = await call_next(request) return response