📡 You're offline — showing cached content
New version available!
Quick Access
Tutorials FastAPI First FastAPI App

First FastAPI App

5 min read Quiz at the end
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()}
Topic Quiz · 3 questions

Test your understanding before moving on

1. What does response_model do in FastAPI?
💡 response_model filters and validates the response, hiding fields not in the model.
2. How do you set a custom status code in FastAPI?
💡 @app.post("/users", status_code=201) sets the default success status code.
3. What is the Pydantic BaseModel used for in FastAPI?
💡 BaseModel subclasses define the shape and validation rules for request bodies.