| name | fastapi-endpoint-patterns |
| description | Conventions for writing FastAPI endpoints with proper typing, status codes, and error handling Use when this capability is needed. |
| metadata | {"author":"ag2ai"} |
Endpoint Patterns
Basic Endpoint Structure
Always use async def. Specify response_model and status_code.
from fastapi import APIRouter, Depends, HTTPException, status
from sqlalchemy.ext.asyncio import AsyncSession
from app.deps.database import get_db
from app.schemas.user import UserCreate, UserRead
from app.services import user_service
router = APIRouter()
@router.post("/", response_model=UserRead, status_code=status.HTTP_201_CREATED)
async def create_user(
payload: UserCreate,
db: AsyncSession = Depends(get_db),
) -> UserRead:
user = await user_service.create_user(db, payload)
return user
Response Models
Define separate schemas for create, read, and update operations: