Back to list
Salmanferozkhan

fastapi

by Salmanferozkhan

0🍴 0📅 Jan 17, 2026

SKILL.md


name: fastapi description: Expert guidance for building REST APIs with FastAPI framework in Python. Use when (1) creating new FastAPI projects from scratch, (2) implementing API endpoints with routing, (3) working with Pydantic models for validation, (4) setting up dependency injection, (5) implementing authentication (OAuth2, JWT, API keys), (6) integrating databases (SQLAlchemy sync/async), (7) writing tests for FastAPI apps, (8) deploying FastAPI to production (Docker, Gunicorn), or (9) implementing advanced features like WebSockets, middleware, background tasks.

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

ConceptDescription
Path params@app.get("/users/{id}")def get(id: int)
Query paramsdef list(skip: int = 0, limit: int = 10)
Request bodyUse Pydantic models: def create(item: Item)
Dependenciesdef route(db = Depends(get_db))
Response model@app.post("/", response_model=ItemOut)

Reference Files

Load these based on the task at hand:

TopicFileWhen to Use
Basicsbasics.mdPath/query params, request bodies, forms, files, status codes
Modelsmodels.mdPydantic schemas, validation, nested models, serialization
Dependenciesdependencies.mdDI patterns, class-based deps, global deps, Annotated
Authauth.mdJWT, OAuth2, API keys, RBAC, CORS, security headers
Databasedatabase.mdSQLAlchemy sync/async, Alembic migrations, repository pattern
Testingtesting.mdTestClient, pytest, fixtures, mocking, coverage
Deploymentdeployment.mdDocker, Gunicorn, Nginx, env config, health checks
Advancedadvanced.mdLifespan, 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
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

  1. Define schemas (Pydantic) → Input validation + docs
  2. Create endpoints → Route handlers with type hints
  3. Add dependencies → DB, auth, settings injection
  4. Write tests → TestClient + pytest
  5. Deploy → Docker + Gunicorn/Uvicorn

Best Practices

  • Use Annotated for reusable dependency types
  • Separate schemas: Create, Update, Response, InDB
  • Use response_model to 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

Score

Total Score

50/100

Based on repository quality metrics

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

0/10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

Reviews

💬

Reviews coming soon