| name | fastapi-mastery |
| description | Comprehensive FastAPI development skill covering REST API creation, routing, request/response handling, validation, authentication, database integration, middleware, and deployment. Use when working with FastAPI projects, building APIs, implementing CRUD operations, setting up authentication/authorization, integrating databases (SQL/NoSQL), adding middleware, handling WebSockets, or deploying FastAPI applications. Triggered by requests involving .py files with FastAPI code, API endpoint creation, Pydantic models, or FastAPI-specific features. |
FastAPI Mastery
Overview
Build production-ready REST APIs with FastAPI using modern Python features, automatic validation, interactive documentation, and asynchronous capabilities.
Quick Start
Create a basic FastAPI application:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
Run with:
uvicorn main:app --reload
Access interactive docs: http://localhost:8000/docs
Skill Structure by Complexity Level
This skill is organized into three progressive levels:
Beginner (references/01-beginner.md)
Read when working with:
- First FastAPI application setup
- Basic routing and path operations
- Request parameters (path, query, body)
- Pydantic models and validation
- Response models and status codes
- Basic error handling
Intermediate (references/02-intermediate.md)
Read when implementing:
- Authentication and authorization (JWT, OAuth2)
- Database integration (SQLAlchemy, async databases)
- Dependency injection system
- Middleware and CORS
- Background tasks
- File uploads and downloads
Advanced (references/03-advanced.md)
Read when building:
- WebSocket connections
- Testing strategies (pytest, TestClient)
- Performance optimization
- Containerization and deployment
- API versioning
- Advanced error handling and logging
Common Development Workflows
Building a CRUD API
- Define Pydantic models for request/response
- Set up database models (SQLAlchemy)
- Create path operations (GET, POST, PUT, DELETE)
- Add validation and error handling
- Implement authentication if needed
- Add tests
See references/01-beginner.md for basic CRUD patterns, references/02-intermediate.md for database integration.
Adding Authentication
- Choose authentication method (JWT, OAuth2, API keys)
- Set up security dependencies
- Create login endpoint
- Protect routes with dependencies
- Handle token refresh if using JWT
See references/02-intermediate.md for complete authentication implementation.
Database Integration
- Choose database (PostgreSQL, MySQL, MongoDB)
- Install and configure ORM (SQLAlchemy, Tortoise, Motor)
- Define database models
- Set up database connection and session management
- Create CRUD operations
- Add migrations (Alembic)
See references/02-intermediate.md for database patterns.
Best Practices
Type hints: Always use Python type hints for automatic validation and documentation.
from typing import Optional
from pydantic import BaseModel
class Item(BaseModel):
name: str
price: float
description: Optional[str] = None
Dependency injection: Use FastAPI's dependency injection for shared logic.
from fastapi import Depends
def get_current_user(token: str = Depends(oauth2_scheme)):
# Validate token and return user
return user
Async when beneficial: Use async for I/O-bound operations (database, external APIs).
@app.get("/items/{item_id}")
async def read_item(item_id: int):
item = await database.fetch_one(query)
return item
Response models: Always define response models for API documentation and validation.
@app.get("/items/{item_id}", response_model=ItemResponse)
async def read_item(item_id: int):
return item
Reference Guide Selection
Choose the appropriate reference based on your task:
- Creating first API or basic endpoints? → references/01-beginner.md
- Adding auth, databases, or middleware? → references/02-intermediate.md
- WebSockets, testing, or deployment? → references/03-advanced.md
All reference files include comprehensive examples and can be read independently.