Performance: Validation error responses
This affects the server response time and client rendering speed when validation errors occur.
Jump into concepts and practice - no test required
from fastapi import FastAPI from fastapi.exceptions import RequestValidationError from fastapi.responses import JSONResponse from fastapi.exception_handlers import request_validation_exception_handler app = FastAPI() @app.exception_handler(RequestValidationError) async def validation_exception_handler(request, exc): # Use FastAPI's built-in handler for efficient error formatting return await request_validation_exception_handler(request, exc)
from fastapi import FastAPI, Request from fastapi.responses import JSONResponse app = FastAPI() @app.exception_handler(ValueError) async def value_error_handler(request: Request, exc: ValueError): # Manually building error response with heavy processing errors = [] for i in range(1000): errors.append(f"Error {i}: {str(exc)}") return JSONResponse(status_code=400, content={"detail": errors})
| Pattern | Server Processing | Response Size | Client Rendering | Verdict |
|---|---|---|---|---|
| Manual large error list | High CPU usage | Large (50kb+) | Slow due to large JSON | [X] Bad |
| Built-in FastAPI handler | Low CPU usage | Small (few kb) | Fast rendering | [OK] Good |
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class User(BaseModel):
age: int
@app.post("/user")
async def create_user(user: User):
return {"age": user.age}from fastapi import FastAPI, Request
from fastapi.exceptions import RequestValidationError
from fastapi.responses import JSONResponse
app = FastAPI()
@app.exception_handler(RequestValidationError)
async def validation_exception_handler(request: Request, exc: RequestValidationError):
return JSONResponse(status_code=400, content={"error": exc.errors()})