Introduction
FastAPI is a modern, fast web framework for building APIs with Python 3.7+.
Basic App
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
price: float
in_stock: bool = True
@app.get("/")
def read_root():
return {"message": "Hello World"}
@app.get("/items/{item_id}")
def read_item(item_id: int):
return {"item_id": item_id, "name": "Item"}
@app.post("/items/")
def create_item(item: Item):
return item
Path Parameters
@app.get("/users/{user_id}")
def get_user(user_id: int):
return {"user_id": user_id}
# Order matters - specific paths first
@app.get("/users/me")
def get_current_user():
return {"user_id": "current"}
Query Parameters
@app.get("/items")
def read_items(skip: int = 0, limit: int = 10):
return {"skip": skip, "limit": limit}
# Optional parameters
@app.get("/items")
def read_items(q: str | None = None):
return {"q": q}
Practice Problems
- Create CRUD endpoints
- Use path and query parameters
- Define request/response models
- Validate input data
- Add API documentation