fastapi
1
总安装量
1
周安装量
#45152
全站排名
安装命令
npx skills add https://github.com/salmanferozkhan/cloud-and-fast-api --skill fastapi
Agent 安装分布
cline
1
openclaw
1
trae
1
qoder
1
trae-cn
1
opencode
1
Skill 文档
FastAPI Development Guide
Build REST APIs with FastAPI – from Hello World to production.
Quick Start
Minimal App
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def root():
return {"message": "Hello World"}
Run: fastapi dev main.py â Visit http://127.0.0.1:8000/docs
New Project Setup
Copy starter template from assets/starter-project/ or:
pip install "fastapi[standard]"
Core Concepts
| Concept | Description |
|---|---|
| Path params | @app.get("/users/{id}") â def get(id: int) |
| Query params | def list(skip: int = 0, limit: int = 10) |
| Request body | Use Pydantic models: def create(item: Item) |
| Dependencies | def route(db = Depends(get_db)) |
| Response model | @app.post("/", response_model=ItemOut) |
Reference Files
Load these based on the task at hand:
| Topic | File | When to Use |
|---|---|---|
| Basics | basics.md | Path/query params, request bodies, forms, files, status codes |
| Models | models.md | Pydantic schemas, validation, nested models, serialization |
| Dependencies | dependencies.md | DI patterns, class-based deps, global deps, Annotated |
| Auth | auth.md | JWT, OAuth2, API keys, RBAC, CORS, security headers |
| Database | database.md | SQLAlchemy sync/async, Alembic migrations, repository pattern |
| Testing | testing.md | TestClient, pytest, fixtures, mocking, coverage |
| Deployment | deployment.md | Docker, Gunicorn, Nginx, env config, health checks |
| Advanced | advanced.md | Lifespan, middleware, WebSockets, streaming, caching, GraphQL |
Project Structure (Professional)
project/
âââ main.py # App entry point
âââ app/
â âââ __init__.py
â âââ config.py # Settings (pydantic-settings)
â âââ database.py # DB connection, session
â âââ models/ # SQLAlchemy models
â âââ schemas/ # Pydantic schemas
â âââ api/
â â âââ v1/
â â â âââ endpoints/
â â â âââ router.py
â â âââ deps.py # Common dependencies
â âââ services/ # Business logic
â âââ repositories/ # Data access layer
âââ tests/
âââ alembic/ # Migrations
âââ Dockerfile
âââ requirements.txt
Common Patterns
CRUD Endpoint
@router.post("/", response_model=ItemOut, status_code=201)
def create(item: ItemCreate, db: DBDep, user: UserDep):
return service.create_item(db, item, user.id)
@router.get("/{id}", response_model=ItemOut)
def read(id: int, db: DBDep):
item = service.get_item(db, id)
if not item:
raise HTTPException(404, "Not found")
return item
Typed Dependencies (Recommended)
from typing import Annotated
DBDep = Annotated[Session, Depends(get_db)]
UserDep = Annotated[User, Depends(get_current_user)]
SettingsDep = Annotated[Settings, Depends(get_settings)]
Error Handling
from fastapi import HTTPException, status
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail="Item not found"
)
Workflow
- Define schemas (Pydantic) â Input validation + docs
- Create endpoints â Route handlers with type hints
- Add dependencies â DB, auth, settings injection
- Write tests â TestClient + pytest
- Deploy â Docker + Gunicorn/Uvicorn
Best Practices
- Use
Annotatedfor reusable dependency types - Separate schemas:
Create,Update,Response,InDB - Use
response_modelto control output shape - Keep business logic in services, not routes
- Use async only when needed (DB, external APIs)
- Enable CORS early in development
- Add health check endpoint (
/health) - Use pydantic-settings for configuration