FastAPI DI manages shared resources (DB sessions, auth) via Depends().
1from fastapi import FastAPI, Depends, HTTPException2from sqlalchemy.orm import Session3from typing import Annotated45app = FastAPI()67# Database dependency8async def get_db():9 db = SessionLocal()10 try:11 yield db12 finally:13 db.close()1415DbSession = Annotated[Session, Depends(get_db)]1617# Auth dependency18async def get_current_user(19 token: str,20 db: DbSession21) -> User:22 user = verify_token(db, token)23 if not user:24 raise HTTPException(status_code=401)25 return user2627CurrentUser = Annotated[User, Depends(get_current_user)]2829# Using dependencies30@app.get("/users/me")31async def read_users_me(current_user: CurrentUser):32 return current_user3334@app.get("/items/")35async def read_items(db: DbSession, user: CurrentUser):36 return db.query(Item).filter(Item.owner == user.id).all()
Benefits: