← Back to Python

All Topics

Advertisement

Learn/Python/Web Development

FastAPI Request Models

Topic: FastAPI

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

Advertisement

Need More Practice?

Get personalized Python help from ChatWhole's AI-powered platform.

Get Expert Help →