FastAPI Request Models

Web DevelopmentFastAPIFree Lesson

Advertisement

Introduction

Define data models with Pydantic for request/response validation.

Pydantic Models

from pydantic import BaseModel, Field, EmailStr

class UserBase(BaseModel):
    email: EmailStr
    username: str = Field(..., min_length=3, max_length=50)

class UserCreate(UserBase):
    password: str = Field(..., min_length=8)

class User(UserBase):
    id: int
    is_active: bool = True
    
    class Config:
        from_attributes = True

class UserUpdate(BaseModel):
    email: EmailStr | None = None
    password: str | None = None

Nested Models

class Address(BaseModel):
    street: str
    city: str
    country: str

class UserWithAddress(UserBase):
    addresses: list[Address] = []

class Order(BaseModel):
    items: list[Item]
    total: float

File Uploads

from fastapi import File, UploadFile

@app.post("/upload")
async def upload_file(file: UploadFile = File(...)):
    contents = await file.read()
    return {"filename": file.filename, "size": len(contents)}

Practice Problems

  1. Create nested Pydantic models
  2. Add field validation
  3. Handle file uploads
  4. Use optional fields
  5. Convert between models

Advertisement

Need Expert Python Help?

Get personalized tutoring, project support, or professional consulting.

Advertisement