Create typed route functions, Pydantic response models, and set default status codes.
Your First FastAPI App
from fastapi import FastAPI
from pydantic import BaseModel
from typing import Optional
app = FastAPI(title="My API", version="1.0.0")
class UserCreate(BaseModel):
name: str
email: str
age: Optional[int] = None
class User(UserCreate):
id: int
class Config:
from_attributes = True
@app.get("/")
def root():
return {"message": "Hello, FastAPI!"}
@app.get("/users/{user_id}", response_model=User)
def get_user(user_id: int):
return {"id": user_id, "name": "Alice", "email": "a@b.com"}
@app.post("/users", response_model=User, status_code=201)
def create_user(user: UserCreate):
# Save to DB...
return {"id": 1, **user.dict()}